white-space

Avatar of Sara Cope
Sara Cope on

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Die CSS-Eigenschaft white-space steuert, wie Text in dem Element, auf das sie angewendet wird, behandelt wird. Nehmen wir an, Sie haben HTML, das *genau* so aussieht:

<div>
  A bunch of words you see.
</div>

Sie haben dem Div eine feste Breite von 100 Pixeln zugewiesen. Bei einer angemessenen Schriftgröße ist das zu viel Text, um in 100px zu passen. Ohne jegliche Anpassung ist der Standardwert für white-space normal und der Text wird umgebrochen. Sehen Sie das Beispiel unten oder folgen Sie zu Hause mit der Demo.

div {
  /* This is the default, you don't need to
     explicitly declare it unless overriding
     another declaration */
  white-space: normal; 
}

Wenn Sie verhindern möchten, dass der Text umgebrochen wird, können Sie white-space: nowrap; anwenden.

Beachten Sie im HTML-Code-Beispiel oben in diesem Artikel, dass es tatsächlich zwei Zeilenumbrüche gibt, einen vor der Textzeile und einen danach, die es dem Text ermöglichen, auf einer eigenen Zeile zu stehen (im Code). Wenn der Text im Browser gerendert wird, erscheinen diese Zeilenumbrüche, als wären sie entfernt worden. Ebenso entfernt werden die zusätzlichen Leerzeichen auf der Zeile vor dem ersten Buchstaben. Wenn wir den Browser dazu zwingen möchten, diese Zeilenumbrüche und zusätzlichen Leerzeichen anzuzeigen, können wir white-space: pre; verwenden.

Es heißt pre, weil das Verhalten so ist, als ob Sie den Text in <pre></pre>-Tags eingeschlossen hätten (die standardmäßig Leerzeichen und Zeilenumbrüche auf diese Weise behandeln). Leerzeichen werden exakt so beibehalten, wie sie im HTML stehen, und der Text wird erst umgebrochen, wenn ein Zeilenumbruch im Code vorhanden ist. Dies ist besonders nützlich, wenn Sie buchstäblich Code anzeigen, der von einer gewissen Formatierung ästhetisch profitiert (und manchmal absolut entscheidend ist, wie in von Leerzeichen abhängigen Sprachen!)

Vielleicht gefällt Ihnen, wie pre Leerzeichen und Umbrüche beibehält, aber Sie benötigen, dass der Text umgebrochen wird, anstatt potenziell aus seinem übergeordneten Container auszubrechen. Dafür ist white-space: pre-wrap; gedacht.

Schließlich bricht white-space: pre-line; Zeilen dort um, wo sie im Code umbrechen, aber zusätzliche Leerzeichen werden trotzdem entfernt.

Interessanterweise wird der letzte Zeilenumbruch nicht beibehalten. Gemäß der CSS 2.1-Spezifikation: "Zeilen werden an beibehaltenen Zeilenumbruchzeichen und nach Bedarf zur Füllung von Zeilenfeldern umgebrochen", sodass dies vielleicht Sinn ergibt.

Hier ist eine Tabelle, um die Verhaltensweisen aller verschiedenen Werte zu verstehen

 Neue ZeilenLeerzeichen und TabsTextumbruch
normalKollabierenKollabierenUmbrechen
preBeibehaltenBeibehaltenKein Umbruch
nowrapKollabierenKollabierenKein Umbruch
pre-wrapBeibehaltenBeibehaltenUmbrechen
pre-lineBeibehaltenKollabierenUmbrechen

In CSS3 wird die Eigenschaft white-space buchstäblich dieser Tabelle folgen und die Eigenschaften entsprechend text-space-collapse und text-wrap zuordnen.

Weitere Informationen

Browser-Unterstützung

IEEdgeFirefoxChromeSafariOpera
8+AlleAlleAlleAlleAlle
Android ChromeAndroid FirefoxAndroid BrowseriOS SafariOpera Mobile
AlleAlleAlleAlleAlle
Quelle: caniuse