Je n'arrive pas à agrandir automatiquement la hauteur de mon parent div
en fonction de son enfant flottant div
s. Tous les enfants flottent, pour prendre de l'espace horizontalement, puis passent à la ligne suivante. Il peut y avoir un nombre variable d'enfants flottants, et le parent doit redimensionner automatiquement sa hauteur. (Le parent div
sert de fond à tous les div
s flottants). Il existe également un second div
sous le parent div
qui doit être poussé vers le bas, de sorte qu'il se trouve sous les div
s flottants.
Il est extrêmement important que la solution fonctionne dans IE.
Si le conteneur parent n'a que des enfants flottants, il n'aura pas de hauteur. L'ajout du CSS suivant au conteneur parent devrait aider:
.parent {
overflow:hidden;
width: 100%;
}
Lisez cet article pour en savoir plus: http://www.quirksmode.org/css/clearing.html .
Vous pouvez insérer un div qui efface les flotteurs après le dernier enfant.
HTML:
<div style="clear: both"></div> <!-- This goes after the last floated element - no floating elements are allowed on either side of this. -->
violon: http://jsfiddle.net/Rc5J8/
Vous devez clear
éléments flottants la hauteur de leurs parents s'effondrer.
La réponse actuellement acceptée est correcte, mais il est généralement préférable de supprimer les flottants en appliquant le hack clearfix ou overflow: hidden
à un élément parent enveloppant pour que les marges continuent de fonctionner comme prévu et pour se débarrasser d'un élément HTML vide.
overflow
-:CSS:
.wrap { overflow: hidden }
.box { float: left; }
Annotation:
<div class="wrap">
<div class="box">
Content
</div>
<div class="box">
Content
</div>
</div>
clearfix
-, comme indiqué ci-dessus:CSS:
.cf:before,
.cf:after {
content: " ";
display: table;
}
.cf:after { clear: both; }
.cf { *zoom: 1; }
.box { float: left; }
Annotation:
<div class="wrap cf">
<div class="box">
Content
</div>
<div class="box">
Content
</div>
</div>
Vous devez utiliser la technique clearfix sur le div contenant
http://www.webtoolkit.info/css-clearfix.html
Cela supprime la nécessité d'ajouter du balisage supplémentaire.
L'ajout de la propriété overflow
css sur l'élément parent résoudra le problème (pas besoin d'un élément div vide et laid pour effacer le flottant):
.parentelement {
overflow:auto;
display: block;
width: 100%;
}
J'ai ajouté les propriétés display et width car certains navigateurs auront besoin de définir ces propriétés.
Vous devez appliquer clearfix au parent car les flottants sont supprimés du flux du document et n'ajoutent pas automatiquement de hauteur au contenu du parent. Clearfix demande au parent de s'étendre à une hauteur suffisamment haute pour effacer son dernier enfant flottant. Cette méthode est bien établie et fonctionne sur tous les navigateurs.