Grundlegendes
Die float-Regel
Grundlegendes zu Cascading Style Sheets: float-Regeln – Konzept, Regeln aus der Spezifikation und Beispiele.
Dies ist eine deutsche Übersetzung der float-Regeln aus der CSS2-Spezifikation. Diese Seite hat keinerlei offiziellen Charakter, sie soll lediglich helfen, das Verstehen dieser Regeln zu fördern. Im Abschnitt Referenz werden diese Regeln in die Praxis übertragen.
- Die linke
margin-Außenkante eines nach links ausgerichtetenfloat-Elements darf nicht über die linke Außenkante des umschließenden Elements hinausstehen. Das gleiche gilt analog für die rechte Seite. - Für ein nach links ausgerichtetes
float-Element, dem bereits andere nach links ausgerichtetefloat-Elemente vorausgehen, gilt:- Es darf nur soweit nach links laufen, dass seine linke
margin- Außenkante noch rechts von der rechtenmargin- Außenkante der links daneben liegenden Box bleibt, oder - es wird so nach unten verschoben, dass seine obere
margin- Außenkante unterhalb der unterenmargin- Außenkante der darüber liegenden Box liegt.
- Es darf nur soweit nach links laufen, dass seine linke
- Die rechte
margin-Außenkante eines nach links ausgerichtetenfloat-Elements darf sich nicht mit der linkenmargin- Außenkante eines nach rechts ausgerichtetenfloat-Elements überlappen, das rechts von ihm steht. Das gleiche gilt analog für die rechte Seite. - Die obere
margin-Außenkante einerfloat-Box darf nicht über die obere Kante des umschließenden Block- Elements hinausstehen. - Die obere
margin-Außenkante einerfloat-Box darf nicht höher sein als die obere Kante eines anderen Block- Level- Elementes oder einerfloat-Box, die bereits vorher im Dokument generiert wurde. - Die obere
margin-Außenkante derfloat-Box eines Elements darf nicht höher sein als die obere Kante einerline-Box, die durch eine weiter oben im Dokument stehende Box generiert wurde. - Die rechte
margin-Außenkante eines nach links ausgerichtetenfloat-Elements, auf dessen linker Seite ein anderesfloat-Element steht, darf nicht weiter rechts sein als die rechte Kante des umschließenden Blocks. Das gleiche gilt analog für die rechte Seite. - Eine
float-Box muss so hoch wie möglich plaziert werden. - Eine nach links ausgerichtete Box muss so weit links wie möglich plaziert werden. Eine nach rechts ausgerichtete Box muss so weit rechts wie möglich plaziert werden. Eine höhere Position hat Vorrang vor einer Position, die weiter links bzw.rechts liegt.
- Ist für eine
float-Box zusätzlich ein Wert für die Eigenschaftclearnotiert, gilt:- für
{clear:left}: Die oberemargin-Außenkante einesfloat-Elements muss unterhalb der unterenmargin-Außenkante aller vorhergehenden nach links ausgerichtetenfloat-Elemente stehen. - für
{clear:right}: Die oberemargin-Außenkante einesfloat-Elements muss unterhalb der unterenmargin-Außenkante aller vorhergehenden nach rechts ausgerichtetenfloat-Elemente stehen. - für
{clear:both}: Die oberemargin-Außenkante einesfloat-Elements muss unterhalb der unterenmargin-Außenkante aller vorhergehendenfloat-Elemente stehen.
- für
Warum es neun Regeln braucht
Die Zahl der Regeln überrascht auf den ersten Blick, denn die Aufgabe klingt einfach: Ein Element soll zur Seite rücken und der Text darum herumlaufen. Der Aufwand entsteht dadurch, dass ein Float aus dem normalen Fluss genommen wird, aber nicht aus der Reihenfolge des Dokuments – er muss also gleichzeitig in Beziehung zu seinem Container, zu vorherigen Floats, zu der Zeile, in der er steht, und zu den Zeilen darunter gebracht werden.
Die Regeln arbeiten dabei mit Verboten statt mit Anweisungen: Sie sagen nicht, wohin ein Float gehört, sondern wohin er nicht darf. Das ist ein bewusster Entwurf – die Schlussregel verlangt, dass ein Float so weit oben und so weit außen steht, wie es die übrigen acht zulassen. Dadurch bleibt die Anordnung eindeutig, ohne dass jeder denkbare Fall aufgezählt werden müsste.
Was aus den Regeln im Alltag folgt
Drei Beobachtungen, die viele als Fehler melden, sind unmittelbare Folgen dieser Regeln. Dass ein Float nie höher steht als die Zeile, in der er im Quelltext beginnt, erklärt, warum sich die Lage eines Bildes ändert, wenn man es einen Absatz weiter nach oben schiebt. Dass ein Float nicht über einen vorherigen derselben Seite hinaufrutschen darf, erklärt die Lücken in Reihen aus unterschiedlich hohen Elementen.
Und dass ein Float die Zeilenboxen verkürzt, aber nicht die Blockbox, erklärt, warum ein Hintergrund oder ein Rahmen am Absatz unter dem Bild hindurchläuft, obwohl der Text daneben steht. Keine dieser Beobachtungen ist eine Eigenheit eines bestimmten Browsers; alle drei stehen wörtlich in den Regeln oben. Die praktische Übertragung findet sich auf der Referenzseite zu float.