Bien que des éléments comme l' <div>
s poussent normalement pour s'adapter à leur contenu, à l'aide de l' float
de la propriété peut causer une surprenante problème de CSS pour les débutants: si flottait éléments non flotté éléments de parent, le parent va s'effondrer.
Par exemple:
<div>
<div style="float: left;">Div 1</div>
<div style="float: left;">Div 2</div>
</div>
Le div parent dans cet exemple ne pas étendre à contenir ses flottait enfants -, il semble avoir height: 0
.
Comment résoudre ce problème?
Je voudrais créer une liste exhaustive des solutions ici. Si vous êtes au courant de la compatibilité inter-navigateur des questions, veuillez les signaler.
Solution 1
Flotteur de la mère.
<div style="float: left;">
<div style="float: left;">Div 1</div>
<div style="float: left;">Div 2</div>
</div>
Pros: la Sémantique du code.
Inconvénients: Vous ne pouvez pas voulez toujours le parent flotté. Même si vous le faites, ne vous flotter les parents parent, et ainsi de suite? Devez-vous flotter chaque élément ancêtre?
Solution 2
Donner le parent explicite de la hauteur.
<div style="height: 300px;">
<div style="float: left;">Div 1</div>
<div style="float: left;">Div 2</div>
</div>
Pros: la Sémantique du code.
Inconvénients: Pas flexible si le contenu change ou le navigateur est redimensionnée, la mise en page de casser.
Solution 3
Ajouter un "spacer" de l'élément à l'intérieur de l'élément parent, comme ceci:
<div>
<div style="float: left;">Div 1</div>
<div style="float: left;">Div 2</div>
<div class="spacer" style="clear: both;"></div>
</div>
Pros: très Simple à code.
Cons: Pas de sémantique; l'entretoise div existe seulement comme une mise en page de hack.
Solution 4
Set parent d' overflow: auto
.
<div style="overflow: auto;">
<div style="float: left;">Div 1</div>
<div style="float: left;">Div 2</div>
</div>
Pros: Ne nécessite pas de supplément de div.
Inconvénients: il Semble que un hack - ce n'est pas l' overflow
de la propriété de l'objet déclaré.