Grundlagen: CSS

Typo­gra­fi­sche Grund­la­gen in CSS

In die­sem Arti­kel geht es um die grund­le­gen­den Ele­mente zum kor­rek­ten Set­zen von Tex­ten auf Web­sei­ten sowie um die grund­le­gen­den Mög­lich­kei­ten, Texte per CSS zu layouten.

Schrift

Schrift­fa­mi­lie

Dieser Absatz ist in Garmond, Baskerville oder "Times New Roman" gesetzt.

Über CSS defi­niert man, wel­che Schrift ein­ge­setzt und wie diese gesetzt wird. Dazu defi­niert man so genannte »font stacks« per CSS. Unter einem font stack ver­steht man die Abfolge ver­schie­de­ner Schrift­fa­mi­lien, wobei der erste Ein­trag die höchste Prio­ri­tät hat. Kann der Brow­ser auf die dort ange­ge­bene Schrift nicht zugrei­fen, z. B. weil sie im Brow­ser nicht instal­liert ist, nutzt er die nächste ver­füg­bare Schrift­fa­mi­lie im font-stack. Der letzte Ein­trag im font stack defi­niert jeweils all­ge­mein, wel­che Art von Schrift ver­wand wer­den soll, falls keine der ange­ge­be­nen Schrif­ten vorhanden ist.

/* font-family: Ideal, Alternativ, Common, Generic; */

p {
   font-family: Garamond, Baskerville, "Times New Roman", serif;
}

In den font stack kön­nen auch mehr als 4 Schrif­ten auf­ge­nom­men wer­den, im obi­gen Bei­spiel wären z. B. noch »Bas­ker­ville Old Face« und »Hoef­ler Text« als Alter­na­ti­ven möglich.

…font stacks are ulti­mately design fac­tors,
and should be scru­ti­ni­zed as such.

Nathan Ford, Bet­ter CSS Font Stacks

Wel­che Schrif­ten man in den font stack auf­nimmt, sollte man nicht dem Zufall über­las­sen, son­der abhän­gig machen von der Ver­füg­bar­keit der Schrif­ten auf unter­schied­li­chen Sys­te­men. Eine Über­sicht über die Ver­brei­tung von Schrif­ten auf den unter­schied­li­chen Sys­te­men gibt es hier. Auf der sel­ben Seite gibt es auch einen »Font stack buil­der«, um pas­sende stacks zu definieren.

Ein schö­nen Arti­kel der sich spe­zi­ell mit die­sem Thema beschäf­tigt, gibt es von Amrin­der Sandhu: Revi­sed Font Stack. Sandhu wie­derum bezieht sich auf einen Arti­kel von Nathan Ford.

Durch neue Browser-Versionen besteht die Mög­lich­keit, über @font-face die Schrift-Datei direkt an den Brow­ser zu schi­cken, so dass die ent­spre­chende Schrift auch dar­ge­stellt wird, wenn sie nicht auf dem Rech­ner ver­füg­bar ist. Mehr dazu in einem eige­nen Arti­kel.

Schrift­größe

Die Schrift­größe kann mit Hilfe unter­schied­li­cher Ein­hei­ten defi­niert wer­den. Diese sind Ems, Punkt, Pixel und Pro­zent. Auf mög­li­che vor­be­legte Schlüs­sel­wör­ter zur Schrift­größe gehe ich hier nicht wei­ter ein, da diese sehr limi­tie­rend sind und eine wirk­li­che Kon­trolle über die Schrift­größe ver­mis­sen lassen.

Ems

Ein »em« ist die unge­fähre Lauf­weite des Buch­sta­bens »M« und ent­spricht einem typo­gra­fi­schen Geviert. Em ist dabei eine rela­tive Maß­ein­heit, bei einer ele­mentei­ge­nen Schrift­größe von 12 Punk­ten ent­spricht 1 em gleich 12 Punkten.

Über Ems lässt sich die Schrift­größe rela­tiv zur umge­ben­den Schrift­größe fest­le­gen. Em-Angaben wer­den also auf unter­ge­ord­nete Ele­mente vererbt.

p {
   font-size: 0.8em;
}

strong {
   font-size: 1.5em;
}

Im obi­gen Bei­spiel wird die Schrift­größe für Absätze etwas klei­ner ein­ge­stellt als die Stan­dard­schrift­größe des Brow­sers (0,8 × Stan­dard­größe, also 80 Pro­zent). Eine inner­halb des Absat­zes als strong aus­ge­zeich­nete Text­pas­sage wird wie­derum ein­ein­halb mal grö­ßer als die Schrift im Absatz gesetzt. Gehen wir von einer Stan­dard­schrift­größe des Brow­sers von 16 Pixeln aus, ergibt sich so für den Para­graph­text ein Größe von 12,8 Pixeln (0,8 × 16) und für den mit strong aus­ge­zeich­ne­ten Text inner­halb eines Para­gra­phen ein Größe von 19,2 Pixeln (0,8 × 16 × 1,5). Die Schrift­grö­ßen wer­den in die­sem Fall vom Brow­ser gerundet.

Die Ver­wen­dung von »em« ist die vom W3C emp­foh­lene Methode zur Defi­ni­tion von Schriftgrößen.

Punkte

Ein Punkt (engl. Point) ist als 1/72 Zoll (Inch) defi­niert. Auf Mac Sys­te­men, die Bild­schirm­auf­lö­sun­gen mit 72 dpi berech­nen, ent­spricht ein Punkt somit einem Pixel. Win­dows rech­net hier mit 96 dpi, somit ent­spricht 1 Punkt dort 1,3 Pixeln.

Die Folge: Eine 10pt-Schrift ist unter Mac 10 Pixel hoch, unter Win­dows 13 Pixel.

Schrift auf Web­sei­ten sollte darum allen­falls in Druck-Stylesheets als Punkt gesetzt wer­den, da es sonst zu sehr unter­schied­li­chen Dar­stel­lun­gen auf ver­schie­de­nen Systemen kommt.

Pixel

Schrift­größe kann auch in Pixeln ange­ge­ben wer­den. Diese Grö­ßen­ein­heit wird von Vie­len favo­ri­siert, da sie Anga­ben von Grö­ßen in Pixeln aus dem Screen­lay­out gewöhnt sind. Außer­dem tritt hier nicht das Pro­blem der Ver­er­bung von Grö­ßen auf, wie dies bei pro­zen­tua­len Anga­ben und Ems auf der Fall ist. Es ist ein­fa­cher, Text in Pixeln zu set­zen, da man davon aus­ge­hen kann, dass Text in 12px auch immer als sol­cher dar­ge­stellt wird.

Aller­dings kön­nen Pixel-Angaben von eini­gen Brow­sern nicht ska­liert wer­den (IE6 und IE7). Seh­be­hin­derte Besu­cher der Seite mit dem Inter­net Explo­rer haben so keine Mög­lich­keit, die Text­größe an ihre Bedürf­nisse anzu­pas­sen. Er wird immer in der vor­ge­ge­ben Pixel­größe dargestellt.

Was ist nun zu empfehlen?

Schrift­grö­ßen soll­ten in Ems defi­niert wer­den, wobei man von einer Stan­dard­größe von 16 Pixeln in den Brow­sern aus­geht. Auf­grund eines Bugs in älte­ren Ver­sio­nen des Inter­net Explo­rers defi­niert man die Stan­dard­größe auf 100 Pro­zent und setzt eine Zei­len­höhe von 1.125em als Stan­dard. Aus­ge­hend von die­sen Wer­ten, die am body-Tag defi­niert wer­den, setzt man die übri­gen Schriftgrößen.

body {
   font-size: 100%;
   line-height: 1.125em; /* 16 x 1.125 = 18 */
}

p {
   font-size: 0.75em; /* 16 x 0,75 = 12 */
}

h1 {
   font-size: 1.125em; /* 16 x 1.125 = 18 */
}

Zusätz­lich defi­niert man im Quell­text der Seite noch eine wei­tere Anwei­sung für alle Brow­ser außer dem IE, um bei die­sen die Stan­dard­schrift­größe eben­falls auf 16 Pixel zu setzen:


body {
   font-size: 16px;
}

Die Anga­ben in der ers­ten Zeile des obi­gen Bei­spiels und in der letz­ten Zeile wer­den »Con­di­tio­nal com­ments« genannt und schlie­ßen in die­sem Fall alle Inter­net Explo­rer Ver­sio­nen vom ein­ge­schlos­se­nen CSS aus.

Text­aus­rich­tung

Absätze las­sen sich ent­we­der links-, zen­triert– oder rechts­bün­dig aus­rich­ten. Zusätz­lich ist auch noch der Block­satz möglich.

Dieser Absatz ist linksbündig.

p {
   text-align: left; /* or right */
}

Rich­tet den Text links– oder rechtsbündig aus.

Dieser Absatz ist zentriert.

p {
   text-align: center;
}

Rich­tet den Text zen­triert aus.

Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus.

p {
   text-align: justify;
}

Rich­tet den Text im Block­satz aus. Block­satz sollte aller­dings nicht ohne eine ent­spre­chende Sil­ben­tren­nung ver­wen­det wer­den. Ansons­ten ent­ste­hen große Lücken im Text, die den Lese­fluss erheb­lich ein­schrän­ken. Da aber bis­lang kein Brow­ser auto­ma­tisch eine Sil­ben­tren­nung durch­führt, ist es mit sehr viel Auf­wand ver­bun­den, Texte mit ent­spre­chen­den Zei­chen zu ver­ehen (mehr im Arti­kel zur Zei­chen­set­zung).

Schrift­schnitte

Unter Schrift­schnit­ten ver­steht man Varia­tio­nen einer Schrift­art. Übli­cher­weise vari­ie­ren Schrift­schnitte in der Schrifts­tärke (fett), Schrift­breite und in der Schrift­lage (kur­siv). Legt man Wert auf Qua­li­tät, wer­den dabei nicht ein­fach nur die Schrift­zei­chen vom Rech­ner ver­än­dert, son­dern die Schrift liegt in einem ent­spre­chend gestal­te­ten eige­nen Schnitt vor. Dies ist beson­ders wich­tig beim Ein­satz von web-fonts.

Einige Schnitte las­sen sich über die Eigen­schaft font-style definieren.

Kursiver Schriftschnitt.

p {
   font-style: italic;
} 

Die nor­male Vari­ante wird hier mit dem Wert nor­mal definiert.

In Schriftstärke 100 gesetzt.

In Schriftstärke 300 gesetzt.

In Schriftstärke 500 gesetzt.

Neben den fet­ten Schrift­schnit­ten gibt es bei eini­gen Schrif­ten noch eine Reihe wei­te­rer Abstu­fun­gen. Defi­niert wer­den diese über die Eigen­schaft font-weight.

p {
   font-weight: bold;
}

Defi­niert den fet­ten Schrift­schnitt. Neben bold gibt es noch die Varia­blen nor­mal (nor­male Schrifts­tärke), ligh­ter (dün­ner als nor­mal falls vor­han­den), bol­der (fet­ter als fett falls vorhanden).

Dane­ben gibt es noch die Mög­lich­keit, die ver­schie­de­nen Schnitte genauer über nume­ri­sche Werte zu definieren.

200 = -
200 = thin
300 = light
400 = regu­lar / CSS: nor­mal
500 = medium
600 = -
700 = bold / CSS: bold
800 = black
900 = heavy

Kapi­täl­chen

Kapi­täl­chen sind ein eige­ner Zei­chen­satz. Sie glei­chen Ver­sa­lien in der Höhe von Klein­buch­sta­ben, mit dem Unter­schied, dass sie etwas brei­ter lau­fen und ihre Strich­stärke so breit ist wie bei der übri­gen Schrift.

Unechte Kapitälchen

p {
   font-variant: small-caps;
}

Auf Web­sei­ten wer­den in der Regel unechte Kapi­täl­chen ein­ge­setzt, da die Schrift­art ent­we­der keine ech­ten Kapi­täl­chen ent­hält oder man nicht auf diese zugrei­fen kann. Mit der @font-face-Technik und ent­spre­chen­den Schrif­ten hat man hier jedoch die Mög­lich­keit, echte Kapi­täl­chen einzusetzen.

Ver­sa­lien

Versalien

Man kann per CSS Text­pas­sa­gen auch in Ver­sa­lien (Groß­buch­sta­ben) umwan­deln, um den Text ent­spre­chend aus­zu­zeich­nen. Dies sollte aber nur bei kur­zen Pas­sa­gen wie Über­schrif­ten gemacht wer­den, da Text in Ver­sa­lien nur sehr schwer les­bar ist. Hier auf der Seite wird dies z. B. bei eini­gen Über­schrif­ten gemacht.

h1 {
   text-transform: uppercase;
   letter-spacing: 0.1em; 
}

Die umge­kehrte Mög­lich­keit mit lower­case kann auch ein­ge­setzt wer­den, um Pas­sa­gen in Minus­kel (Klein­buch­sta­ben) umzu­wan­deln. Mit capi­ta­lize wan­delt man nur den ers­ten Buch­sta­ben jedes Wor­tes in eine Versalie.

Unter-, Über– und Durchstreichungen

Wörter können unterstrichen, überstrichen oder durchgestrichen werden.

Text­pas­sa­gen las­sen sich per CSS ein­fach unter­strei­chen. Es ist auch mög­lich eine Linie über dem Text­ab­schnitt anzei­gen zu las­sen oder den Text durch-zu-streichen.

h1 {
   text-decoration: underline;
}

Sol­len nur ein­zelne Abschnitte inner­halb eines Text­blocks unter­stri­chen wer­den, defi­niert man eine ent­spre­chende Klasse und weist diese dem Abschnitt mit Hilfe des span-Elements zu.

span.underline {
   text-decoration: underline;
}

Neben under­line (Linie unter dem Text) gibt es noch die mög­li­chen Werte none (keine Linie), over­line (Linie über dem Text) und line-through (durchgestrichen).

Farbe

Ich bin grün…

Die Schrift­farbe wird über die Ein­stel­lung color defi­niert. Der Farb­wert kann ent­we­der als hexa­de­zi­ma­ler Wert, RGB oder RGBA ange­ge­ben wer­den. RGBA wird nur von neue­ren Brow­sern unterstützt.

p {
   color: #8fdb63;
}

Auf­grund des hohen Kon­tras­tes von Moni­to­ren wird Text häu­fig nicht in schwarz gesetzt, son­dern in einem dunk­len Grauton.

Hori­zon­ta­ler Textfluss

Ange­neh­mes Lesen ist haupt­säch­lich abhän­gig von zwei Fak­to­ren: der Zei­len­länge und dem Zei­len­ab­stand. Dabei gilt: Die per­fekte Zei­len­länge gibt es nicht. Sie ist immer abhän­gig von der ver­wen­de­ten Schrift­art und Schrift­größe. Es gilt aber auch, dass zu lange und zu kurze Zei­len ermü­dend wir­ken, da das Auge zu lange der Text­zeile fol­gen oder zu häu­fig umsprin­gen muss. Die Zei­len­länge sollte also mit Bedacht gewählt wer­den. Als Richt­werte kann man von 5070 Zei­chen (811 pt Schrift­größe) bei ein­spal­ti­gem Text und von 4050 Zei­chen bei mehr­spal­ti­gem Text ausgehen.

Wort­ab­stand

Über die CSS-Eigenschaft word-spacing lässt sich der Abstand (Leer­raum) ein­zel­ner Wör­ter inner­halb einer Zeile setzen.

Dieser Text hat Lücken.

p {
   word-spacing: 1em;
}

Zei­chen­ab­stand

Die Lauf­weite eines Tex­tes lässt sich per CSS ändern. Dabei wird der Abstand ein­zel­ner Zei­chen zuein­an­der erhöht oder ver­rin­gert. In der Typo­gra­fie wird dies Spa­tio­nie­ren genannt. Wird der Text so stark spa­tio­niert, dass sich der Text von der nor­ma­len Lauf­weite deut­lich absetzt, spricht man von »Sperren«.

Dieser Text ist gesperrt.

p {
   letter-spacing: 0.4em;
}

Ver­ti­ka­ler Textfluss

Der ver­ti­kale Text­fluss wird bestimmt durch die Text­größe, den Zei­len­ab­stand und die Abstände zwi­schen Text­blö­cken. Diese Werte kön­nen per CSS beein­flusst werden.

Zei­len­ab­stand

Der Zei­len­ab­stand ist defi­niert durch den Abstand von Grund­li­nie zu Grund­li­nie. Den Abstand zwi­schen den Unter­län­gen der ers­ten Zeile und den Ober­län­gen der nächs­ten Zeile bezeich­net man als Durchschuss.

Der Zei­len­ab­stand lässt sich mit line-height fest­le­gen. Dabei sollte line-height nie als abso­lu­ter Wert (px oder pt) ange­ge­ben wer­den, son­dern immer als Fak­tor der Text­größe (em).

Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

p {
   font-size: 12px;
   line-height: 1.5em;
}

Zur Ver­ein­fa­chung habe ich in die­sem Fall die Schrift­größe als Pixel­wert ange­ge­ben. Durch die Defi­nie­rung der Zei­len­höhe als 1.5em kommt man so auf eine Gesamt­höhe jeder Zeile von 18 Pixel (12 × 1,5). Der Durch­schuss beträgt hier 6 Pixel (18126).

Je län­ger eine Zeile ist, desto grö­ßer muss der Zei­len­ab­stand sein, um den Text ange­nehm lesen zu kön­nen. Als Stan­dard kann man von einen Zei­len­ab­stand von 120 Pro­zent also 1.2em aus­ge­hen.

Abstand zwi­schen Textblöcken

In hac habitasse platea dictumst. Nam pulvinar, odio sed rhoncus suscipit, sem diam ultrices mauris, eu consequat purus metus eu velit.

Proin metus odio, aliquam eget molestie nec, gravida ut. Praesent id metus massa, ut blandit odio. Proin quis tortor.

Um einen ange­neh­men ver­ti­ka­len Text­fluss zu errei­chen, sollte man den Abstand zwi­schen Text­pas­sa­gen auf die Zei­len­höhe abstim­men. Das erreicht man durch ent­spre­chend defi­nierte margins.

p {
   font-size: 12px;
   line-height: 1.5em;
   margin-top: 1.5em;
   margin-bottom: 1.5em;
}

Bei Varia­tion der Text­größe, z.B. bei Über­schrif­ten, soll­ten der Zei­len­ab­stand und der Abstand zwi­schen den Text­be­rei­chen pro­por­tio­nal der Zei­len­höhe des Fließ­tex­tes ent­spre­chen. Um dies zu errei­chen, passt man die line-height und margin-Werte entsprechend an.

h2 {
   font-size: 14px;
   line-height: 1.286;
   margin-top: 1.286;
   margin-bottom: 1.286;
}

Wie kom­men diese Werte zustande? Über­schrif­ten zwei­ter Kate­go­rie haben in die­sem Fall eine Schrift­größe von 14 Pixeln. Bei einer zu Grunde lie­gen­den Zei­len­höhe von 18 Pixeln sollte die Zei­len­höhe in die­sem Fall 18 ÷ 14 = 1.286 sein. Die Abstände wer­den ent­spre­chend angepasst.

Die margins kön­nen auch unsym­me­trisch ange­legt wer­den. So kann z.B. ein obe­rer Abstand von 1½ Zei­len mit einem unte­ren Abstand von einer hal­ben Zeile kom­bi­niert werden.

h2 {
   line-height: 1.286;
   margin-top: 1.929em;
   margin-bottom: 0.643em;
}

Ein hilf­rei­ches Tool zur Berech­nung von Schrift­grö­ßen und Abstän­den ist der CSS-Typeset Matrix and code gene­ra­tor von Jan Quickels.

Bil­der im Text

Damit Bil­der im Text den Text­fluss nicht stö­ren, soll­ten sie immer der Zei­len­höhe ange­passt sein. Die Höhe des Bil­des ent­spricht also immer einem Viel­fa­chem der Zeilenhöhe.

Damit es hier nicht zu Pro­ble­men kommt, wenn ein Besu­cher der Seite die Schrift­größe per Brow­ser ver­stellt, kann man die Größe der Bil­der per CSS in ems defi­nie­ren. Somit ska­lie­ren die Bil­der bei der Ver­grö­ße­rung der Schriftgröße.

Ein 180 Pixel hohes Bild (10 Zei­len hoch) würde eine Höhe von 180 ÷ 1215em bekom­men (12 ist gleich der Basis-Schriftgröße von 12px). Eine dyna­mi­sche Matrix zum Umrech­nen von px in em gibt es hier.

Text­um­bruch

Leer­raum

Brow­ser ren­dern Text anders, als die­ser im Quell­text ange­ge­ben wurde. So wer­den meh­rere auf­ein­an­der fol­gende Leer­zei­chen z.B. durch ein ein­zel­nes Leer­zei­chen ersetzt und Zei­len­um­brü­che im Quell­text nicht dar­ge­stellt, es sei denn sie wer­den mit dem br–Element erzwungen.

Dies hat den Vor­teil, dass sich der Quell­text bezüg­lich sei­ner Les­bar­keit ent­spre­chend for­ma­tie­ren lässt, ohne Ein­fluss auf die Dar­stel­lung der Web­seite zu nehmen.

Will man diese Eigen­schaft der Brow­ser für bestimmte Inhalte einer Web­seite deak­ti­vie­ren, nutzt man dafür das pre–Element.

Mit der CSS–Eigen­schaft white-space lässt sich ebenso fest­le­gen wie der Brow­ser mit Zei­len­um­brü­chen und Leer­zei­chen im Text umgehen soll:

p {
   white-space: normal;
}

Zei­len­um­brü­che im Quell­text wer­den nicht dar­ge­stellt. Meh­rere auf­ein­an­der fol­gende Leer­zei­chen wer­den zu einem Leer­zei­chen zusam­men­ge­fügt. Der Brow­ser fügt einen Zei­len­um­bruch am Ende der Zeile ein.

p {
   white-space: pre;
}

Zei­len­um­brü­che und Leer­zei­chen wer­den wie im Quell­text ange­ge­ben dar­ge­stellt, genauso wie bei Ver­wen­dung des HTML– Ele­ments.

p {
   white-space: nowrap;
}

Der Brow­ser führt keine auto­ma­ti­schen Zei­len­um­brü­che am Zei­len­ende durch. Links­bün­di­ger Text wird also am rech­ten Rand eines HTML– Ele­ments nicht umge­bro­chen, son­dern läuft über den Rand hin­aus. Zei­len­um­brü­che im Quell­text wer­den nicht dar­ge­stellt, Leer­zei­chen zusam­men­ge­fasst. Ent­spricht der Ver­wen­dung des HTML–Ele­ments.

p {
   white-space: pre-wrap;
}

Wurde mit CSS 2.1 ein­ge­führt. Leer­zei­chen und Ein­rü­ckun­gen wer­den aus dem Quell­text über­nom­men. Zusätz­lich erfolgt ein auto­ma­ti­scher Zei­len­um­bruch am Zei­len­ende. Wird im Inter­net Explo­rer seit der Ver­sion 8, im Fire­fox seit der Ver­sion 3.0 und in Safari, Chrome und Opera unterstützt.

p {
   white-space: pre-line;
}

Wurde mit CSS 2.1 ein­ge­führt. Leer­zei­chen im Quell­text wer­den zusam­men­ge­fasst. Zei­len­um­brü­che wer­den wie im Quell­text ange­ge­ben, wenn sie durch das br–Element erzwun­gen oder am Zei­len­ende durch­ge­führt werden. Wird im Inter­net Explo­rer seit der Ver­sion 8, im Fire­fox seit der Ver­sion 3.5 und in Safari, Chrome und Opera unterstützt.

Ein­ge­setzt wird haupt­säch­lich nowrap – um zu ver­hin­dern, dass zu lan­ger Text z.B. bei einem Link in die nächste Zeile umbricht.

Vor­ge­hen bei zu lan­gen Texten

Bei Tex­ten inner­halb von fest­ge­leg­ten Con­tai­nern kann es vor­kom­men, dass ein­zelne Wör­ter oder der ganze Text über den Con­tai­ner hin­aus­lau­fen. Um dies zu ver­hin­dern, beste­hen zwei Mög­lich­kei­ten: Man kann eine Tren­nung lan­ger Wör­ter erzwin­gen, oder den Text auto­ma­tisch kürzen.

Wort­tren­nung

Das längste deutsche Wort ist Donaudampfschifffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft laut dem Guiness Buch der Rekorde.

Gerade im Deut­schen gibt es teil­weise sehr lange Wör­ter. Mit der CSS–Eigen­schaft word-wrap kann man den Brow­ser zwin­gen, sol­che Wör­ter zu tren­nen, wenn sie über die Zei­len­breite hin­aus­lau­fen wür­den. Die Tren­nung erfolgt an belie­bi­ger Stelle und folgt kei­nen Regeln.

p {
   word-wrap: break-word;
}

Die Eigen­schaft ver­fügt über nur zwei mög­li­che Werte, nor­mal (keine Tren­nung) und break-word (Tren­nung an belie­bi­ger Stelle).

Texte kür­zen

Das längste deutsche Wort ist Donaudampfschifffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft laut dem Guiness Buch der Rekorde.

Mit Hilfe von text-overflow ist es mög­lich, Text zu kür­zen, wenn er über den ihn umge­be­nen Con­tai­ner hinausläuft.

p {
   width: 100%;
   overflow: hidden;
   white-space: nowrap;
   -o-text-overflow: ellipsis;
   text-overflow: ellipsis;
}

Defi­niert wird die Eigen­schaft am umge­ben­den Ele­ment. Das Ele­ment muss eine gesetzte Weite haben, damit der IE6 die Eigen­schaft interpretiert.

Unter­stützt wird die Mög­lich­keit seit dem Inter­net Explo­rer 6 und in Safari. Für Opera muss man die her­stel­ler­spe­zi­fi­sche Angabe (-o-) ange­ben. Fire­fox schnei­det den Text ein­fach ab und zeigt keine Ellipsis an.

Das längste deutsche Wort ist Donaudampfschifffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft laut dem Guiness Buch der Rekorde.

Setz man zusätz­lich noch white-space auf nowrap, limi­tiert man den Text auf eine Zeile.

Auto­ma­ti­sche Anführungszeichen

Statt Anfüh­rungs­zei­chen im Quell­text einer Seite zu set­zen, gibt es auch die Mög­lich­keit, ent­spre­chende Text­pas­sa­gen mit ‹q›–Tags zu kenn­zeichnen.

Karl Mustermann sagteDies ist ein Zitat.

Stan­dard­mä­ßig stel­len Brow­ser den ein­ge­schlos­se­nen Text­block in oben ste­hen­den dop­pel­ten Anfüh­rungs­zei­chen dar. Das quote-Tag führt dabei nicht zu einem Zei­len­um­bruch, so das auch Pas­sa­gen im Fließ­text aus­ge­zeich­net wer­den können.

Ein Vor­teil der quote-Tags: Sie las­sen sich per CSS gestal­ten, z. B. in Abhän­gig­keit von der Spra­che. So las­sen sich etwa typo­gra­fi­sche Anfüh­rungs­zei­chen per CSS dekla­rie­ren, auch die Ver­schach­te­lungs­tiefe lässt sich mit angeben:

html[lang="de"] q {
   quotes: "»" "«" "›" "‹"
}

html[lang="fr"] q {
   quotes: "«" "»" "‹" "›"
}

q:lang(de) {
   quotes: "»" "«" "›" "‹"
}

q:lang(fr) {
   quotes: "«" "»" "‹" "›"
}

Bei den Sprach­an­ga­ben han­delt es sich um einen CSS Pseudo-Selektor. Damit die Aus­wahl der Spra­che über ent­spre­chende Selek­to­ren funk­tio­niert, muss den HTML-Elementen im Quell­text ein ent­spre­chen­des Sprachat­tri­but mit­ge­ge­ben wer­den. Unter CSS3.info gibt es einen Test, um die Kom­pa­ti­bi­li­tät und Unter­stüt­zung von ver­schie­de­nen Selek­to­ren im Brow­ser zu testen.

Lei­der wird dies nicht von allen Brow­sern kor­rekt umge­setzt. So zeigt der Inter­net Explo­rer 6/7 keine Anführungszeichen an.

Safari zeigt die Anfüh­rungs­zei­chen auch nicht an, da er die CSS Eigen­schaft quo­tes nicht ver­steht. Hier gibt es aber eine Lösung.

q:before { 
	content: "201E";
}

q:after { 
	content: "201C";
}

Die Anfüh­rungs­zei­chen sind hier im Uni­code angegeben.

Aller­dings wer­den durch diese Dekla­ra­tion even­tu­ell vor­han­dene Sprach­an­ga­ben auch für andere Brow­ser über­schrie­ben. Daher muss bei vor­han­de­nen Sprach­an­ga­ben die Dekla­ra­tion genauer werden:

q[lang~='de']:before {
   content: "201E"
}
q[lang~='de']:after {
   content: "201C"
}

Wei­tere Details fin­den sich in einem Arti­kel bei David’s Kit­chen.

VG Wort

{ be creative }

css gallery