Das (fast) unnötige HTML-Element
Vorsicht: Dieser Artikel ist mindestens ein Jahr alt. Wenn es ein Artikel über Webentwicklung ist, kann es gut sein, dass er inzwischen überholt oder veraltet ist.
Es gibt eine ganze Menge Elemente in HTML. Manche braucht man ständig, andere praktisch kaum und eines, nun, eines ist im Prinzip (fast) unnötig, wird aber dennoch ständig benutzt. Die Rede ist von <br>
.
Die HTML-Spezifikation erklärt recht lapidar:
The br
element represents a line break.
Jetzt könnte man meinen: „Och guck, damit kann ich Zeilenumbrüche einfügen. Praktisch.“ Der entscheidende, erklärende Satz aber folgt danach:
br
elements must be used only for line breaks that are actually part of the content, as in poems or addresses.
Korrekt übersetzt bedeutet das: Das Element <br>
darf nur für Zeilenumbrüche verwendet werden, welche fester Bestandteil des Inhaltes sind. Beispiele wären Gedichte (oder Songtexte) oder Adressen – und bei Adressen kann man ja über die (visuelle) Notwendigkeit schon wieder streiten, wenn man mal zu den Mikroformaten schaut.
Definitiv falsch und in flexiblen Layouts normalerweise auch sehr fehleranfällig aber ist es, <br>
zu verwenden, um manuelle Zeilenumbrüche in beliebigen Textelementen zu erzwingen.
<p>Wir möchten, dass das folgende
<br>
<br>
Wort
<br>
<br>
besonders hervorgehoben wird.</p>
Nach wie vor relativ großer Beliebtheit erfreut sich solcher Unfug, weil viele CMS und insbesondere Blogsysteme dafür eine PHP-Funktion namens nl2br einsetzen. Ist ja auch bequem: Der Redakteur muss sich keinerlei Gedanken machen, wie er seinen Text (womöglich semantisch sinnvoll!) auszeichnet. Man tippt einfach los, wie man es von der Schreibmaschine kennt, haha, und PHP macht brav aus jedem Zeilenumbruch ein <br>
.
Theme-Autoren und/oder Frontend-Designer aber werden dann wahnsinnig, weil so niemand einen vernünftigen vertikalen Rhythmus herstellen kann. Das bedeutet, dass man sich Gedanken über Dinge wie Schriftgröße, Zeilenhöhe und Abstand zwischen zwei Textabsätzen im Fließtext macht, um ein harmonisches Schriftbild zu erzeugen. In anderen Kontexten mag so ein Konstrukt wie im Codeschnipsel oben dazu führen, dass Text auf kleinen Bildschirmen merkwürdig umbricht, weil der Umbruch eben forciert wird.
Wer es sich dennoch einfach machen möchte beim Schreiben von Artikeln sollte ein Markup-Plugin wie Markdown oder Textile verwenden und gleichzeitig seinem Blogsystem abgewöhnen, nl2br
zu nutzen. (Das Serendipity-Plugin dafür z.B. bietet eine alternative Funktion an, die sich nl2p
nennt und stattdessen korrekte Absätze erzeugt.) Und immer daran denken: eigentlich ist <br>
nur für Gedichte und Adressen!
7 Kommentare
Gunnar Bittersmann
Eigentlich ist
br
auch bei Gedichten (Liedern) und Adressen blöd. Sinnvoller als die Lücke zwischen den Zeilen auszuzeichnen dürfte es sein, die Zeilen selbst auszuzeichnen.In XHTML 2 war dafür das
l
-Element vorgesehen. Das war wohl Grund genug für Hixie, ein solches in HTML5 nicht zu ergänzen.twitter.com/g16n/status/509234788386230273
Zum Stylen braucht man ein solches Element. Bleibt einem nur,
span class='line'
oder ein custom element wiex-l
zu verwenden.speakerdeck.com/gunnarbittersmann/web-components
Nicolai Schwarz
Hmm. Nee. br ist nicht unnötig. Ich nutze es des öfteren. Auch im Fließtext. Wenn man etwa nicht in derselben Zeile weiterschreiben will. Aber es auch kein neuer Gedanke für einen eigenen Absatz ist. Dann ist ein Zeilenumbruch ein guter Kompromiss. So wie man ein Seminkolon setzen kann, wenn ein Komma zu wenig und ein Punkt zuviel ist.
Das Problem ist halt, dass zu viele Leute es falsch benutzen und/oder den Editor falsch eingestellt haben.
Matthias Mees
Warum „will“ ich denn in Fließtext in einer neuen Zeile weiterschreiben, wenn es kein neuer, einen neuen Absatz erzeugender Gedanke ist? (Ganz abgesehen davon, dass ich in dem Fall finde, dass übler Flattersatz entsteht, den man noch nicht mal mit CSS korrigieren könnte, weil keine Absätze ausgezeichnet sind.)
mitch
Ich mach das auch gerne so… „Grenzwert“ für Absatz oder nicht ist bei mir das Mengenverhältnis. Wenn der Anfang kurzes ist wie „Und dann passierte folgendes:“, was mir für einen eigenen Absatz zu winzig ist, dann packe ich da auch gerne einen Zeilenumbruch dran und dann folgt der dicke eigentliche Absatz.
Das ist aber grenzwertig, das gebe ich gerne zu :-)
Der Butterick hat da leider auch nicht viel zu geschrieben: http://practicaltypography.com/hard-line-breaks.html
Kiki
van Aaken hatte dazu mal was vor Ewigkeiten, https://praegnanz.de/weblog/individuelle-abstaende-in-html-css-so-geht-s, das scheint immer noch ein verbreitetes Problem zu sein.
mitch
Was mache ich denn, wenn ich hunderte von Artikeln habe, die mit aktivem nl2br geschrieben worden sind und jetzt was anderes will, z.B. nl2p, Markdown, Textile oder Plain HTML? Wenn ich da nachträglich was umstelle oder das Plugin deaktiviere, schlägt das vermutlich auf alle alten Artikel durch und die sind dann kaputt.
Ich könnte in das Plugin eingreifen und sagen „schalt dich mal ab für alle Artikelnummern größer 450“ oder so, aber so richtig toll wäre das nicht.
Gibt es dafür eine ordentliche Lösung?
Matthias Mees
Das Problem dabei sind nicht wirklich die Zeilenumbrüche, soweit ich weiß. Zumindest nicht bei NL2P, Markdown oder Textile, denn die interpretieren das alle ziemlich gleich. Sprich: Wenn NL2BR aus zwei Zeilenumbrüchen zwei
br
macht, dann machen die drei eben „anständige“ Absätze mitp
-Elementen. Da gibt es andere Dinge, die bei einer Umstellung schief gehen könnten oder nachbearbeitet werden müssten.Theoretisch gibt es – glaube ich – s9y-Plugins, mit denen Du bestimmte Markup-Plugins von Fall zu Fall auf bestimmte Einträge oder Seiten anwenden kannst oder nicht, aber ein „ab Artikel-ID X“ ist da meines Wissens nicht möglich. Ich kann auch nicht sagen, ob das geht.