Je ne sais pas pourquoi ce simple CSS ne fonctionne pas ...
.app a {
height: 18px;
width: 140px;
padding: 0;
overflow: hidden;
position: relative;
margin: 0 5px 0 5px;
text-align: center;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
color: #000;
}
<div class="app">
<a href="">Test Test Test Test Test Test</a>
</div>
Devrait couper autour du 4ème "Test"
FF only
- si ellefilter
est appliquée, les points de suspension ne seront pas rendus. bug ouverttext-overflow
: brainlessdeveloper.com/2017/07/29/why-wont-my-text-overflowRéponses:
text-overflow:ellipsis;
ne fonctionne que lorsque les conditions suivantes sont remplies:px
(pixels). La largeur en%
(pourcentage) ne fonctionnera pas.overflow:hidden
etwhite-space:nowrap
défini.La raison pour laquelle vous rencontrez des problèmes ici est que l' élément
width
de votrea
élément n'est pas contraint. Vous avez unwidth
paramètre, mais comme l'élément est défini surdisplay:inline
(c'est- à -dire la valeur par défaut), il l'ignore et rien d'autre ne limite sa largeur non plus.Vous pouvez résoudre ce problème en effectuant l'une des opérations suivantes:
display:inline-block
oudisplay:block
(probablement le premier, mais cela dépend de vos besoins de mise en page).display:block
et donnez à cet élément une valeur fixewidth
oumax-width
.float:left
oufloat:right
(probablement le premier, mais encore une fois, l'un ou l'autre devrait avoir le même effet en ce qui concerne les points de suspension).Je suggérerais
display:inline-block
, car cela aura l'impact collatéral minimum sur votre mise en page; cela fonctionne très bien commedisplay:inline
celui qu'il utilise actuellement en ce qui concerne la mise en page, mais n'hésitez pas à expérimenter avec les autres points également; J'ai essayé de donner autant d'informations que possible pour vous aider à comprendre comment ces choses interagissent ensemble; une grande partie de la compréhension de CSS consiste à comprendre comment les différents styles fonctionnent ensemble.Voici un extrait avec votre code, avec un
display:inline-block
ajout, pour montrer à quel point vous étiez proche.Références utiles:
la source
white-space: nowrap
n'est en fait pas nécessaire. Nous pouvons encore voir les ellipses même sans elle. Pour plusieurs lignestext-overflow
, voir ce SOwhite-space: nowrap
est cependant requis.width
. Il vous suffit de définir unwhite-space: nowrap;
et cela fonctionne très bien.La réponse acceptée est impressionnante. Cependant, vous pouvez toujours utiliser la
%
largeur et atteindretext-overflow: ellipsis
. La solution est simple:Il semble que chaque fois que vous utilisez
calc
, la valeur finale est rendue en pixels absolus, qui se convertit par conséquent80%
en quelque chose comme800px
pour un1000px
conteneur de largeur. Par conséquent, au lieu d'utiliserwidth: [YOUR PERCENT]%
, utilisezwidth: calc([YOUR PERCENT]%)
.la source
Donc, si vous atteignez cette question parce que vous avez du mal à faire fonctionner les points de suspension à l'intérieur d'un
display: flex
conteneur, essayez d'ajoutermin-width: 0
au conteneur le plus à l'extérieur qui déborde de son parent même si vous avez déjà défini unoverflow: hidden
et voyez comment cela fonctionne pour vous.Plus de détails et un exemple de travail sur ce codepen par aj-favoriser . J'ai complètement fait l'affaire dans mon cas.
la source
position: sticky
élément dans undisplay: flex
conteneur.Assurez
word-wrap
- vous également qu'il est réglé sur normal pour IE10 et inférieur.Les normes référencées ci-dessous définissent le comportement de cette propriété comme étant dépendant du paramétrage de la propriété "text-wrap". Toutefois, les paramètres WordWrap sont toujours efficaces dans Windows Internet Explorer car Internet Explorer ne prend pas en charge la propriété «retour à la ligne».
Par conséquent , dans mon cas,
word-wrap
a été mis à break-word (hérité ou par défaut?), Ce qui a faittext-overflow
fonctionner FF et Chrome, mais pas IE.ms info sur la propriété word-wrap
la source
anchor
,span
... les balises sont des éléments en ligne par défaut. En cas d'éléments en ligne, lawidth
propriété ne fonctionne pas. Vous devez donc convertir votre élément en élémentsinline-block
oublock level
la source
Inclure les quatre lignes écrites après les informations pour que les points de suspension fonctionnent
la source
Ajoutez
display: block;
oudisplay: inline-block;
à votre#User_Apps_Content .DLD_App a
démo
la source
Vous ajoutez juste une ligne css:
la source
Dans bootstrap 4 , vous pouvez ajouter une
.text-truncate
classe pour tronquer le texte avec des points de suspension.la source
Doit contenir
NE DOIT PAS contenir
Devrait contenir
la source
Vous pouvez également ajouter float: left; à l'intérieur de cette classe #User_Apps_Content .DLD_App a
la source
J'ai dû faire de longues descriptions ellipse (ne prendre qu'une seule voie) tout en étant réactif, donc ma solution était de laisser le texte envelopper (au lieu de
white-space: nowrap
) et au lieu de largeur fixe, j'ai ajouté une hauteur fixe:la source
C'est le code qui permet que:
débordement: caché est requis
la source
J'ai rencontré le même problème et il semble qu'aucune des solutions ci-dessus ne fonctionne pour Safari. Pour un navigateur non safari, cela fonctionne très bien:
Pour Safari, c'est celui qui fonctionne pour moi. Notez que la requête multimédia pour vérifier si le navigateur est Safari peut changer au fil du temps, il vous suffit donc de bricoler la requête multimédia si cela ne fonctionne pas pour vous. Avec la
line-clamp
propriété, il serait également possible d'avoir plusieurs lignes sur le web avec des points de suspension, voir ici .la source
https://stackoverflow.com/a/53784508/5626747
Je ne peux pas commenter en raison de la réputation, donc je fais une autre réponse:
Dans ce cas, vous devrez également supprimer la
display: block;
propriété généralement suggérée de l'élément que vous avez activétext-overflow: ellipsis;
, ou elle sera coupée sans le ... à la fin.la source
la source