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"
text-overflow:Ellipsis;
ne fonctionne que lorsque les conditions suivantes sont vraies:
px
(pixels). La largeur en %
(pourcentage) ne fonctionnera pas.overflow:hidden
et white-space:nowrap
définis.La raison pour laquelle vous rencontrez des problèmes ici est que la width
de votre élément a
n'est pas contrainte. Vous avez un paramètre width
, mais comme l'élément est défini sur display:inline
(c'est-à-dire le paramètre par défaut), il l'ignore et rien d'autre ne limite sa largeur.
Vous pouvez résoudre ce problème en effectuant l’une des opérations suivantes:
display:inline-block
ou display:block
(probablement l'ancien, mais cela dépend des besoins de votre mise en page).display:block
et attribuez à cet élément une valeur fixe width
ou max-width
.float:left
ou float:right
(probablement l'ancien, mais là encore, l'un ou l'autre devrait avoir le même effet en ce qui concerne Ellipsis).Je suggérerais display:inline-block
, car cela aura un impact latéral minimal sur votre mise en page; cela fonctionne très bien comme le display:inline
qu'il utilise actuellement en ce qui concerne la disposition, mais n'hésitez pas à expérimenter également les autres points; J'ai essayé de donner autant d'informations que possible pour vous aider à comprendre comment ces éléments interagissent ensemble; Une grande partie de la compréhension de CSS concerne la compréhension de la manière dont les différents styles fonctionnent ensemble.
J'espère que cela pourra aider.
Voici un extrait avec votre code, avec un display:inline-block
ajouté, pour montrer votre proximité.
.app a {
height: 18px;
width: 140px;
padding: 0;
overflow: hidden;
position: relative;
display: inline-block;
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>
Références utiles:
Assurez-vous également que Word-wrap
est défini sur normal pour IE10 et inférieur.
Les normes référencées ci-dessous définissent le comportement de cette propriété comme dépendant du paramétrage de la propriété "text-wrap". Toutefois, les paramètres wordWrap sont toujours effectifs dans Windows Internet Explorer, car Internet Explorer ne prend pas en charge la propriété "text-wrap".
Ainsi, dans mon cas, Word-wrap
a été défini sur break-Word (hérité ou par défaut?), Ce qui a permis à text-overflow
de fonctionner dans FF et Chrome, mais pas dans IE.
La réponse acceptée est géniale. Cependant, vous pouvez toujours utiliser %
width et atteindre text-overflow: Ellipsis
. La solution est simple:
display: inline-block; /* for em, a, span, etc (inline by default) */
text-overflow: Ellipsis;
width: calc (80% - 0px); /* The trick is here! */
Il semble que lorsque vous utilisez calc
, la valeur finale est rendue en pixels absolus, ce qui convertit conséquemment 80% - 0px
en quelque chose comme 800px
pour un conteneur 1000px
-width. Par conséquent, au lieu d'utiliser width: [YOUR PERCENT]%
, utilisez width: calc([YOUR PERCENT]% - 0px)
.
Les variables anchor
, span
... sont éléments en ligne par défaut, la propriété width
ne fonctionne pas dans le cas d'éléments en ligne. Vous devez donc convertir votre élément en éléments inline-block
ou block level
Incluez les quatre lignes écrites après les informations pour que Ellipsis fonctionne
.app a {
height: 18px;
width: 140px;
padding: 0;
position: relative;
margin: 0 5px 0 5px;
font: bold 15px/18px Arial;
text-align: center;
text-decoration: none;
color: #FFF;
/*
**Note:**The Below 4 Lines are necessary
for Ellipsis to work
*/
display: block; // change it as per your requirement
overflow: hidden;
text-overflow: Ellipsis;
white-space: nowrap;
}
Ajoutez display: block;
ou display: inline-block;
à votre #User_Apps_Content .DLD_App a
Vous venez d'ajouter une ligne css:
.app a {
display: inline-block;
}
Donc, si vous atteignez cette question parce que vous ne parvenez pas à obtenir les ellipsis dans un conteneur display: flex
, essayez d'ajouter min-width: 0
au conteneur le plus à l'extérieur qui déborde de son parent, même si vous avez déjà défini un overflow: hidden
et voir comment cela fonctionne pour vous .
Plus de détails et un exemple de travail sur ceci codepen by aj-Foster . Totalement fait le tour dans mon cas.
Vous pouvez également ajouter float: left; à l'intérieur de cette classe #User_Apps_Content .DLD_App a
Je devais faire de longues descriptions ellipse (ne prendre qu'une seule piste) tout en étant réactif; ma solution était donc de laisser le texte envelopper (au lieu de white-space: nowrap
) et au lieu d'une largeur fixe, j'ai ajouté une hauteur fixe:
span {
display: inline-block;
line-height: 1rem;
height: 1rem;
overflow: hidden;
// OPTIONAL LINES
width: 75%;
background: green;
// white-space: normal; default
}
<span>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Commodi quia quod reprehenderit saepe sit. Animi deleniti distinctio dolorum iste molestias reiciendis saepe. Ea eius ex, ipsam iusto laudantium natus obcaecati quas rem repellat temporibus! A alias at, atque deserunt dignissimos dolor earum, eligendi eveniet exercitationem natus non, odit sint sit tempore voluptate. Commodi culpa ex facere id minima nihil nulla omnis praesentium quasi quia quibusdam recusandae repellat sequi ullam, voluptates. Aliquam commodi debitis delectus magnam nulla, omnis sequi sint unde voluptas voluptatum. Adipisci aliquam deserunt dolor enim facilis libero, maxime molestias, nemo neque non nostrum placeat reprehenderit, rerum ullam vel? A atque autem consectetur cum, doloremque doloribus fugiat hic id iste nemo nesciunt officia quaerat quibusdam quidem quisquam similique sit tempora vel. Accusamus aspernatur at au
</span>
Dans bootstrap 4, vous pouvez ajouter une classe .text-truncate
pour tronquer le texte avec un Ellipsis.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<!-- Inline level -->
<span class="d-inline-block text-truncate" style="max-width: 250px;">
The quick brown fox jumps over the lazy dog.
</span>
Doit contenir
text-overflow: Ellipsis;
white-space: nowrap;
overflow: hidden;
NE DOIT PAS contenir
display: inline
Devrait contenir
position: sticky