Textüberlauf-Ellipse auf einer von zwei Spannen innerhalb eines Wrappers
Lesezeit: 3 Minuten
Ich habe ein Problem mit Ellipsen. Hier ist mein HTML:
<div id="wrapper">
<span id="firstText">This text should be effected by ellipsis</span>
<span id="lastText">this text should not change size</span>
</div>
Gibt es eine Möglichkeit, dies mit reinem CSS zu tun? Folgendes habe ich versucht:
Hat bei mir besser mit max-width statt width funktioniert.
– mUser1990
6. Dezember 2016 um 11:42 Uhr
Wie lösen Sie das Problem mit der vertikalen Ausrichtung? eine Spanne erscheint niedriger als die andere.
– Jeremy
22. Februar 2018 um 18:09 Uhr
@Jeremy: Entfernen Sie entweder “display: inline-block” auf #firstText oder fügen Sie “display: inline-block” auch zu #lastText hinzu. Am Ende haben also beide entweder einen Inline-Block oder keinen. Die richtige Lösung hängt möglicherweise von Ihrem Markup ab.
– Reißer17
23. April 2018 um 12:15 Uhr
@ripper17, das funktioniert nicht. In jsfiddle sind sowohl #firstText als auch #lastText Inline-Blocks und dennoch nicht vertikal ausgerichtet. Das Entfernen beider Inline-Blöcke behebt das Problem ebenfalls nicht.
– Fritzster
28. April 2019 um 21:43 Uhr
@Jeremy: füge einfach vertical-align:middle hinzu; im #erstenText. Geige aktualisieren: jsfiddle.net/68xgrqvm
– Harshad Vekariya
24. Mai 2019 um 11:30 Uhr
Michael
Sie könnten dies erreichen, indem Sie die Reihenfolge Ihrer Spannen ändern und der ersten Spanne ein Float-Recht geben. Auf diese Weise müssen Sie für keines Ihrer Elemente eine Breite festlegen:
<div id="wrapper">
<span id="lastText">this text must be shown in full</span>
<span id="firstText">This text may be cropped</span>
</div>
Fantastischer Ansatz, wenn Sie keine Breite angeben können. display: block; scheint den Unterschied zu machen.
– Weltschmerz
25. September 2015 um 22:14 Uhr
Freezystem
Es gibt noch einen kleinen Fall, der nicht bearbeitet wurde:
Wenn Sie eine unbekannte oder dynamische Wrapper-Größe haben und möchten, dass das erste untergeordnete Element den gesamten verfügbaren Platz einnimmt, aber Auslassungspunkte, wenn es immer noch zu lang ist.
Hier ist meine Lösung mit flex CSS-Eigenschaften:
#wrapper{
display: inline-flex;
flex-flow: row nowrap;
max-width: 100%; /* or width:100% if you want the spans to take all available space */
}
#firstText{
flex: 1;
white-space: pre;
overflow: hidden;
text-overflow: ellipsis;
}
#lastText{
white-space: nowrap;
}
<div id="wrapper">
<span id="firstText">This text should be effected by ellipsis if wrapper is too small</span>
<span id="lastText">This text should be fixed and not change size</span>
</div>
Ich habe dies nicht so zum Laufen gebracht (getestet in IE 11). Entweder max-width sollte einfach sein widthoder der inline-flex sollte einfach sein flex.
– Alex311
13. Januar 2017 um 20:51 Uhr
@Freezystem du bist eine Legende, das ist genau das, was ich brauchte! Vielen Dank!
– kornz
12. August um 11:45 Uhr
Du könntest es so vortäuschen: Ändere deine span zu div und ändere dein CSS: