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:

#firstText
{
    overflow: hidden;
    white-space:nowrap;
    text-overflow:ellipsis;
}

#lastText
{
    white-space:nowrap;
    overflow:visible;   
}

So wird es dargestellt:

Dieser Text sollte durch Auslassungspunkte erfolgen. Dieser Text sollte

Während dies das Ergebnis ist, das ich will:

Dieser Text sollte e…dieser Text sollte seine Größe nicht ändern

Benutzer-Avatar
sandeep

Du kannst Geben width zu deinem #firstText so was :

#firstText
{
    overflow: hidden;
    white-space:nowrap;
    text-overflow:ellipsis;
    width:150px;
    display:inline-block;
}

Überprüfen Sie dieses Beispiel

http://jsfiddle.net/Qhdaz/5/

  • 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

Benutzer-Avatar
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:

#firstText
{ 
  font-size: 30px;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#lastText
{ 
  color:red;
  font-size:30px;
  float:right;
  white-space:nowrap;
}
<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

Benutzer-Avatar
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:

#firstText
{
    float: left;
    width: 250px;
    height: 20px;
    overflow: hidden;
    white-space:nowrap;
    text-overflow:ellipsis;
}

#lastText
{
    float: left;
    white-space:nowrap;
    overflow:visible;   
}

1312080cookie-checkTextüberlauf-Ellipse auf einer von zwei Spannen innerhalb eines Wrappers

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy