Wer floatet muss auch clearen!
Diese Weisheit schlägt dem geneigten Anfänger rasch entgegen, wenn ihm bei seinen ersten Gehversuchen in der erlauchten Kunst des Webdesigns das Design aus dem Ruder gelaufen ist.
Okay, also clearen, bloß welche Methode??
Da sagt ja jeder was anderes.
Zu Anfang ein paar Merksätze dazu:
Es gibt verschiedene Maßnahmen zum Clearen, wobei die meisten so ihre Favoriten haben.
Meiner Meinung nach sollte man das eher dynamisch entscheiden.
Ich habe eine kleine Prioritätenliste nach der ich mich richte, um das Clear einzubauen:
<hr />, die die clear-Eigenschaft bekommt. Dieses clearende Element wird direkt nach dem letzten Float und unmittelbar vor dem Ende des die Floats umgebenden Containers in den Quelltext eingebaut.Es gibt noch eine weitere, leider nicht besonders geeignete Methode um Floats einzuschließen, die einem immer wieder mal in diversen Foren entgegengetrötet wird:
Dem umgebenden Element die overflow-Eigenschaft ungleich overflow:visible; zuordnen, also overflow:auto/scroll/hidden;.
Ältere Firefox-Versionen, Netscape und auch alte Operas kommen damit überhaupt nicht gut zurecht.
Heiko hat dazu einen Testcase gebaut, den ihr euch anschauen solltet.
Man sollte auch nicht vergessen das die overflow-Eigenschaft in der Spezifikation nicht präzise genug definiert ist, was auch in modernen Browsern immer mal gerne zu überraschenden Fehldarstellungen führen kann.
Deshalb sollte man diese Eigenschaft generell nur mit Bedacht und nach ausgiebigem Testen verwenden.
Zum Schluß noch dieses:
Das Clear wirkt lokal wenn es für ein floatendes Element definiert wird, das in einem gefloateten Container hockt, d.h. das Clear gilt nur innerhalb der gefloateten Umgebung.
Wenn Clear für ein floatendes Element definiert wird, das in einem statischen Container hockt, gilt es für alle Floats auf der Seite. Das ist dann ein globales Clear.
Besonders das globale Clear sorgt gerne mal für unliebsame Überraschungen beim Erstellen einer Website.
Der klassische Fall ist der eines Zweispaltenlayouts, wo die linke Spalte floatet und die Rechte einen ausreichenden linken margin bekommt, damit sie neben dem Float zum Liegen kommt.
Deshalb hier mal ein kleines Beispiel für ein ungewolltes globales Clear:

Um dem ungewollten globalem Clear aus dem Weg zu gehen ist es das Beste die rechte Spalte auch floaten zu lassen.
Alternativ braucht die rechte Spalte noch einen inneren Container der Float in Verbindung mit einer Breite bekommt.
[...] [...]