Abschneiden zu langer Inhalte

Autor
Gunnar Bittersmann
Letzte Änderung
2009-01-06
Aktuelle Version
http://bittersmann.de/articles/ellipsis

Zusammenfassung

Dieser Artikel beschreibt Probleme mit serverseitigem Abschneiden nach n Buchstaben und zeigt eine clientseitige Alternative mit der CSS-Eigenschaft text-overflow bzw. mit XUL.

Serverseitiges Abschneiden sucks

In Blogs, Foren u.a. Web-2.0-Anwendungen besteht oft der Wunsch, Nutzereingaben auf eine Zeile bestimmter Breite zu begrenzen und dies mittels Ellipse '…' kenntlich zu machen.

Oft wird dazu serverseitig der Text nach n Buchstaben abgeschnitten. Dies ist jedoch alles andere als optimal, denn:

Kurzum: Es ist unmöglich, eine für alle Nutzer passende Zahl n zu finden.

Clientseitiges Abschneiden rocks

Die gute Nachricht: Das serverseitige Abschneiden ist völlig überflüssig. Aktuelle Browser können das mit CSS!

Obwohl die Eigenschaft text-overflow noch nicht in die CSS3-Spezifikation aufgenommen wurde [CSS3-TEXT], wird sie von Internet Explorer und Webkits (Safari, Chrome) schon interpretiert. Opera kennt sie bislang nur mit dem Opera-spezifischen Präfix als -o-text-overflow.

Im Stylesheet (wobei die Breite exemplarisch ist) steht:

.ellipsis { overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; white-space: nowrap; width: 42em; -moz-binding: url("bindings.xml#ellipsis"); }

Die letzte Zeile ist für Firefox, der text-overflow noch nicht interpretiert (auch in der Version 3.1 Beta 2 nicht). Im Firefox 3 lässt sich das Gewünschte aber mit XUL erzielen. [Koppes] In bindings.xml steht:

<bindings xmlns="http://www.mozilla.org/xbl" xmlns:xbl="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <binding id="ellipsis"> <content> <xul:description crop="end" xbl:inherits="value=xbl:text"> <children/> </xul:description> </content> </binding> </bindings>

Und so sieht es aus: Beispielseite | im Iframe:

Ein kleiner Wermutstropfen bleibt: Der Nutzer kann den abgeschnittenen Text im Firefox nicht markieren.

Der Firefox 2 bleibt auf der Strecke: Es wird keine Ellipse angezeigt und eventuell mitten in einem Buchstaben abgeschnitten. Das ist aber nicht tragisch: Zum einen ist das lediglich ein kosmetisches Problem, die Funktionalität wird nicht beeinträchtigt; zum anderen sind die Tage des Firefox 2 bereits gezählt, Mozilla hat den Support eingestellt und ruft die Nutzer zum Upgrade auf Firefox 3 auf.

Referenzen

CSS3-TEXT
CSS Text Level 3, W3C working draft, 2007-03-06, http://www.w3.org/TR/2007/WD-css3-text-20070306/; neuste Version verfügbar unter http://www.w3.org/TR/css3-text/
Koppes
Rikkert Koppes, text-overflow: ellipsis for firefox, http://www.rikkertkoppes.com/thoughts/2008/6/