overflow:auto;
w zawierającym elemencie div sprawia, że wszystko wewnątrz niego (nawet elementy pływające) jest widoczne, a zewnętrzny element div całkowicie otacza je. Zobacz ten przykład:
.wrap {
padding: 1em;
overflow: auto;
background: silver;
}
.float {
float: left;
width: 40%;
background: white;
margin: 0 1%;
}
<div class="wrap">
<div class="float">Cras mattis iudicium purus sit amet fermentum. At nos hinc posthac, sitientis piros Afros. Qui ipsorum lingua Celtae, nostra Galli appellantur. Petierunt uti sibi concilium totius Galliae in diem certam indicere. Ambitioni dedisse scripsisse iudicaretur.</div>
<div class="float">Mercedem aut nummos unde unde extricat, amaras. A communi observantia non est recedendum. Quisque ut dolor gravida, placerat libero vel, euismod. Paullum deliquit, ponderibus modulisque suis ratio utitur.</div>
</div>
overflow
został dodany). Naprawiono to przez usunięcieoverflow: auto;
z klasy, a takżeheight
selektoraIstnieje więcej niż jeden sposób na wyczyszczenie pływaków. Możesz sprawdzić niektóre tutaj:
http://work.arounds.org/issue/3/clearing-floats/
Np.
clear:both
Może pracować dla Ciebieźródło
overflow: auto;
przycinanie treści (takich jak dekoracje fokusu), które wychodzą poza element, ale tak się nie stanie.W wielu przypadkach
overflow: auto;
to wystarczy, ale ze względu na ukończenie i obsługę wielu przeglądarek spójrz na Clearfix, który wykona zadanie dla wszystkich przeglądarek.Rozważmy następujący znacznik.
Wraz z następującymi stylami.
.content { float:left; }
.clearfix { ..from link.. }
Bez wyraźnego poprawka rodzic
div
nie miałby wzrostu ze względu na pływające dzieci. Clearfix sprawi, że rodzic rozważy pływające dzieci.źródło
overflow: auto;
Pomyślałem, że świetnym sposobem na zrobienie tego jest ustawienie
display: table
na div.źródło