Ersatz für <br clear="all">

Mit dem HTML-Tag <br clear="all"> kann man in HTML 4.01 Transitional erreichen, dass der Textfluss nach einem gefloateten Element (Bild, div-Container, o.ä.) fortgesetzt wird. Allerdings ist <br clear="all"> vom W3C als "deprecated" eingestuft und sollte in neu erstellten HTML-Dokumenten nicht mehr verwendet werden. In der Variante HTML 4.01 Strict ist es bereits jetzt nicht mehr enthalten. Was also tun?

Für die Lösung dieses Problems gibt es mehrere Möglichkeiten, von denen ich hier drei aufzählen möchte. Alle drei Varianten basieren auf CSS bzw. auf CSS-Klassen.

Verwendung einer Klasse im <br>-Tag

Das <br>-Tag wird mit einer zusätzlichen CSS-Klasse notiert, die den Textfluss steuert. In dieser Klasse wird mit clear:both erreicht, dass der Text nach dem gefloateten Element fortgesetzt wird. Auf die Steuerung des Textflusses mit <br> braucht man also nicht zu verzichten. Der Code sieht wie folgt aus:

Im Stylesheet oder im <style>-Bereich des HTML-Dokuments:

  br.next {
    clear: both
  }
  

Im HTML-Dokument:

  <div style="float: left; width: 200px; height: 200px; border: 2px solid">
    Nach links gefloateter Text
  </div>
  <p>Dieser Text steht neben der Box.<br class="next">

  Dieser Text steht unter der Box.</p>
  

<div> mit eigener Klasse für Fortsetzung

Für die Steuerung des Textflusses wird eine spezielle Klasse verwendet, die zusammen mit einem <div> eingesetzt wird. Über diese Klasse wird der Textfluss nach dem gefloateten Element fortgesetzt. Der Code sieht so aus:

Im Stylesheet oder im <style>-Bereich des HTML-Dokuments:

  .next {
    clear: both;
    height: 1px;
    overflow: hidden
  }
  

Im HTML-Dokument:

  <div style="float: left; width: 200px; height: 200px; border: 2px solid">
    Nach links gefloateter Text
  </div>
  <p>Dieser Text steht neben der Box.</p>

  <div class="next"></div>

  <p>Dieser Text steht unter der Box.</p>
  

Ein Vorteil dieser Lösung besteht darin, dass über die Angabe von height in der Klasse next der Abstand zum nachfolgenden Text gesteuert werden kann. Wenn also statt height:1px z.B. height:1.5em angegeben wird, wird ein größerer Abstand zum nachfolgenden Text freigelassen.

Verwendung einer Klasse im nachfolgenden Element

Wie im vorangegangenen Beispiel wird eine Klasse zur Steuerung des Textflusses verwendet. Diese Klasse wird aber keinem eigenständigen Element wie dem <div>-Container im Beispiel zuvor zugewiesen, sondern als zusätzliche Klasse dem Element, das dem gefloateten Element folgt. Das Ganze sieht dann so aus:

Im Stylesheet oder im <style>-Bereich des HTML-Dokuments:

  .next {
    clear: both
  }
  

Im HTML-Dokument:

  <div style="float: left; width: 200px; height: 200px; border: 2px solid">
    Nach links gefloateter Text
  </div>
  <p>Dieser Text steht neben der Box.</p>

  <p class="next">Dieser Text steht unter der Box.</p>
  

Natürlich dürfen bei dieser Variante die Eigenschaften height und overflow in der Klasse next nicht verwendet werden, weil diese die Formatierung des <p>-Blocks beeinflussen. Und ein Textblock mit der Höhe von einem Pixel ist wahrscheinlich nicht das Ergebnis, das erzielt werden sollte.

Welche Alternative ist die beste?

Welche der drei aufgezeigten Möglichkeiten bevorzugt werden soll, kann man pauschal nicht sagen. Wer bisher den Textfluss mit <br clear="all"> gesteuert hat, wird sicherlich zur ersten Alternative tendieren. Im Hinblick auf eine klare Struktur des HTML-Dokuments ist jedoch die dritte Möglichkeit zu präferieren, weil im Dokument keine zusätzlichen HTML-Tags notiert werden müssen.

Mir persönlich sagt die zweite Möglichkeit (leerer <div>-Block mit eigener Klasse) am meisten zu. Die Blöcke zur Fluss-Steuerung kann ich so am einfachsten im Dokument platzieren und wiedererkennen. Ich setze diese Art der Steuerung in allen von mir erstellten Webseiten ein.