In Anbetracht der riesigen Menge an Antworten wollte ich nicht posten. Allerdings kann diese Methode jemandem helfen, so wie sie mir geholfen hat.
Halten Sie sich nach Möglichkeit von Schwimmern fern
Es ist erwähnenswert, dass ich Schwimmer wie Ebola meide. Es gibt viele Gründe und ich bin nicht allein; Lesen Sie Rikudo Antwort über Was ist ein Clearfix? und Sie werden sehen, was ich meine. Mit seinen eigenen Worten: ...the use of floated elements for layout is getting more and more discouraged with the use of better alternatives...
Es gibt noch andere gute (und manchmal bessere) Möglichkeiten als Schwimmer. Die Technologie schreitet voran und verbessert sich, flexbox (und andere Methoden) werden sich durchsetzen und Floats werden nur noch eine schlechte Erinnerung sein. Vielleicht ein CSS4?
Fehlverhalten von Schwimmern und fehlgeschlagene Löschungen
Zunächst einmal kann es vorkommen, dass man sich vor Schwimmern sicher wähnt, bis der Rettungsring durchstochen wird und der html-Strom zu sinken beginnt:
Im Codepen http://codepen.io/omarjuvera/pen/jEXBya unten, die Praxis der Freigabe eines Schwimmers mit <div classs="clear"></div>
(oder ein anderes Element) ist üblich, aber verpönt und antisemantisch.
<div class="floated">1st</div>
<div class="floated">2nd</div>
<div class="floated">3nd</div>
<div classs="clear"></div> <!-- Acts as a wall -->
<section>Below</section>
CSS
div {
border: 1px solid #f00;
width: 200px;
height: 100px;
}
div.floated {
float: left;
}
.clear {
clear: both;
}
section {
border: 1px solid #f0f;
}
Allerdings Gerade als Sie dachten, Ihr Floß sei segelfähig...bumm! Wenn die Bildschirmgröße immer kleiner wird, sieht man seltsame Verhaltensweisen wie in der folgenden Grafik (Gleiche http://codepen.io/omarjuvera/pen/jEXBya ):
Warum sollte Sie das interessieren? Ungefähr 80 % (oder mehr) der verwendeten Geräte sind mobile Geräte mit kleinen Bildschirmen. Desktop-Computer/Laptops sind nicht mehr der König.
Das ist noch nicht alles
Dies ist nicht das einzige Problem mit Schwimmern. Es gibt viele, aber in diesem Beispiel könnten einige sagen all you have to do is to place your floats in a container
. Aber wie Sie in der Tabelle sehen können codepen und Grafik, das ist nicht der Fall. Es hat die Dinge offenbar schlimmer gemacht:
HTML
<div id="container" class="">
<div class="floated">1st</div>
<div class="floated">2nd</div>
<div class="floated">3nd</div>
</div> <!-- /#conteiner -->
<div classs="clear"></div> <!-- Acts as a wall -->
<section>Below</section>
CSS
#container {
min-height: 100px; /* To prevent it from collapsing */
border: 1px solid #0f0;
}
.floated {
float: left;
border: 1px solid #f00;
width: 200px;
height: 100px;
}
.clear {
clear: both;
}
section {
border: 1px solid #f0f;
}
Und das Ergebnis?
Es ist das *** gleiche!
Sie werden eine CSS-Party starten, zu der Sie alle möglichen Selektoren und Eigenschaften einladen und Ihr CSS noch mehr durcheinander bringen, als Sie es zu Beginn getan haben. Nur um Ihren Float zu reparieren.
CSS Clearfix zur Rettung
Dieses einfache und sehr anpassungsfähige Stück CSS ist eine Schönheit und ein "Retter":
.clearfix:before, .clearfix:after {
content: "";
display: table;
clear: both;
zoom: 1; /* ie 6/7 */
}
Das war's! Es funktioniert wirklich, ohne die Semantik zu verletzen, und habe ich erwähnt es funktioniert? :
Aus der gleichen Stichprobe... HTML
<div class="clearfix">
<div class="floated">1st</div>
<div class="floated">2nd</div>
<div class="floated">3nd</div>
</div>
<section>Below</section>
CSS
div.floated {
float: left;
border: 1px solid #f00;
width: 200px;
height: 100px;
}
section {
border: 4px solid #00f;
}
.clearfix:before, .clearfix:after {
content: "";
display: table;
clear: both;
zoom: 1; /* ie 6/7 */
}
Jetzt brauchen wir nicht mehr <div classs="clear"></div> <!-- Acts as a wall -->
und die Semantikpolizei bei Laune halten. Dies ist nicht der einzige Vorteil. Dieses Clearfix passt sich jeder Bildschirmgröße an, ohne die Verwendung von @media
in seiner einfachsten Form. Mit anderen Worten, es hält Ihren Float-Container in Schach und verhindert Überschwemmungen. Schließlich bietet es Unterstützung für alte Browser alle in einem kleinen Karate Chop =)
Hier ist noch einmal der Clearfix
.clearfix:before, .clearfix:after {
content: "";
display: table;
clear: both;
zoom: 1; /* ie 6/7 */
}
1 Stimmen
Ich benutze jqui.net/tips-tricks/css-clearfix es hilft mir, den Punkt zu verstecken :)
1 Stimmen
Was ist mit IE 6 und IE 7? Sie folgen nie dem richtigen Weg, Dinge zu bereinigen.
0 Stimmen
Besteht nach einem Jahr die Möglichkeit, die korrekte Antwort auf den modernen dreizeiligen Clearfix zu überarbeiten? hier wie sie in den bekannten Frameworks Bourbon und Inuit.css verwendet wird? Siehe meine Antwort unten .