Ich weiß nicht, warum dieses einfache CSS nicht funktioniert ...
.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>
Sollte um den 4. "Test" abschneiden
text-overflow:Ellipsis;
funktioniert nur, wenn folgende Bedingungen erfüllt sind:
px
(Pixel) beschränkt sein. Breite in %
(Prozentsatz) funktioniert nicht.overflow:hidden
und white-space:nowrap
festgelegt sein.Der Grund, warum Sie hier Probleme haben, ist, dass die width
Ihres a
-Elements nicht eingeschränkt ist. Sie haben zwar eine width
-Einstellung, aber da das Element auf display:inline
(d. H. Standardeinstellung) gesetzt ist, wird es ignoriert, und nichts anderes beschränkt seine Breite.
Sie können dies beheben, indem Sie einen der folgenden Schritte ausführen:
display:inline-block
oder display:block
(wahrscheinlich das vorherige, hängt jedoch von Ihren Layoutanforderungen ab).display:block
und geben Sie diesem Element eine feste width
oder max-width
.float:left
oder float:right
(wahrscheinlich das erste Element, aber auch hier sollte die gleiche Wirkung für die Ellipsis auftreten).Ich würde display:inline-block
vorschlagen, da dies die minimale kolaterale Auswirkung auf Ihr Layout haben wird. es funktioniert sehr ähnlich wie der display:inline
, den es derzeit verwendet, was das Layout angeht, aber Sie können auch mit den anderen Punkten experimentieren. Ich habe versucht, so viele Informationen wie möglich zu geben, um zu verstehen, wie diese Dinge zusammenwirken. Ein großer Teil des Verständnisses von CSS besteht darin, zu verstehen, wie verschiedene Stile zusammenarbeiten.
Hoffentlich hilft das.
Hier ist ein Ausschnitt mit Ihrem Code und einem hinzugefügten display:inline-block
, um zu zeigen, wie nahe Sie waren.
.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>
Nützliche Hinweise:
Stellen Sie außerdem sicher, dass Word-wrap
für IE10 und darunter auf normal gesetzt ist.
Die unten aufgeführten Standards definieren das Verhalten dieser Eigenschaft als abhängig von der Einstellung der Eigenschaft "Textumbruch". WordWrap-Einstellungen sind jedoch in Windows Internet Explorer immer wirksam, da Internet Explorer die Eigenschaft "Textumbruch" nicht unterstützt.
In meinem Fall wurde Word-wrap
auf break-Word (geerbt oder standardmäßig?) Gesetzt, wodurch text-overflow
in FF und Chrome funktioniert, jedoch nicht im IE.
Die akzeptierte Antwort ist großartig. Sie können jedoch weiterhin %
width verwenden und text-overflow: Ellipsis
erreichen. Die Lösung ist einfach:
display: inline-block; /* for em, a, span, etc (inline by default) */
text-overflow: Ellipsis;
width: calc (80% - 0px); /* The trick is here! */
Wenn Sie calc
verwenden, wird der endgültige Wert anscheinend in absoluten Pixeln wiedergegeben, wodurch 80% - 0px
in etwas wie 800px
für einen 1000px
- width-Container umgewandelt wird. Verwenden Sie daher nicht width: [YOUR PERCENT]%
, sondern width: calc([YOUR PERCENT]% - 0px)
.
anchor
, span
... Tags sindInline-Elementestandardmäßig. Bei Inline-Elementen funktioniert die width
-Eigenschaft nicht. Sie müssen also Ihr Element in inline-block
- oder block level
-Elemente konvertieren
Fügen Sie die vier Zeilen ein, die nach den Informationen geschrieben wurden, damit Ellipsis funktioniert
.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;
}
Fügen Sie display: block;
oder display: inline-block;
zu Ihrem #User_Apps_Content .DLD_App a
hinzu
Sie fügen nur eine Zeile hinzu: css:
.app a {
display: inline-block;
}
Wenn Sie also zu dieser Frage gelangen, weil Sie Probleme haben, die Ellipsis in einem display: flex
-Container zum Laufen zu bringen, fügen Sie min-width: 0
zum äußersten Container hinzu, der übergeordnet ist, obwohl Sie bereits einen overflow: hidden
gesetzt haben, und sehen Sie, wie das für Sie funktioniert .
Weitere Details und ein Arbeitsbeispiel zu diesem codepen by aj-foster . Total hat der Trick in meinem Fall.
Sie können auch Float hinzufügen: left; innerhalb dieser Klasse #User_Apps_Content .DLD_App a
Ich musste einige lange Beschreibungen mit einer Ellipse machen (nur eine Spur nehmen), während ich ansprechbar war. Daher bestand die Lösung darin, den Text umbrechen zu lassen (anstelle von white-space: nowrap
).
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>
In bootstrap 4 können Sie eine .text-truncate
-Klasse hinzufügen, um den Text mit einer Ellipse abzuschneiden.
<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>
Muss enthalten
text-overflow: Ellipsis;
white-space: nowrap;
overflow: hidden;
DARF NICHT enthalten
display: inline
Sollte beinhalten
position: sticky