Les éléments flottants (à l'aide de la propriété CSS float) ne sont plus pris en compte dans le calcul de la hauteur de leur élément parent (représenté ici par une bordure rouge). Du coup, l'élément parent ne s'agrandit plus pour contenir ces éléments. Il s'agit là d'un comportement standard, mais parfois surprenant !
Ceci est un paragraphe flottant à gauche. L'image qui suit (en dehors de ce paragraphe) sera en positionnement flottant à droite.
Note : si vous avez visualisé cette page avec Internet Explorer Windows, vous aurez remarqué que l'exemple ci-dessus n'y présente pas de problème : l'élément parent englobe bien les éléments enfants, flottants ou pas (d'où l'intérêt de l'image qui accompagne cet exemple).
Pour les utilisateurs d'Internet Explorer pour Windows, voici donc un aperçu du rendu dans la plupart des autres navigateurs :
Au passage, on peut en profiter pour rappeler la structure de notre boîte. Notre bloc conteneur (bloc parent) fait ici 500px de large, et il est doté d'espaces intérieurs (padding) de 20px. Ces espaces intérieurs se rajoutent à la largeur du bloc, de sorte que nous avons un bloc d'une largeur totale de 540 pixels.
Pourquoi donc Internet Explorer pour Windows n'applique-t-il pas le même comportement ?
En réalité, ce test est biaisé : en temps normal Internet Explorer pour Windows applique bien le comportement standard (les éléments flottants "flottent" par dessus les autres blocs, et ne repoussent pas les limites de l'élément parent), mais dans l'exemple ci-dessus on a donné une largeur fixe (500px) à l'élément parent. Une dimmension fixe (en largeur ou en hauteur) est un des paramètres qui font qu'Internet Explorer va conférer au bloc en question un statut particulier, le layout. Et un des effets du layout est que les blocs qui ont ce statut viennent englober tous leurs éléments enfants, y compris les flottants.
Maintenant, si on supprime cette largeur fixe, voici ce que l'on obtient :
Ceci est un paragraphe flottant à gauche. L'image qui suit (en dehors de ce paragraphe) sera en positionnement flottant à droite.
Avec la plupart des navigateurs web, on n'observera pas un grand changement, si ce n'est que le bloc parent prend maintenant toute la largeur disponible. Par contre, pour Internet Explorer Win, le bloc parent perd le layout, et on observe le même dépassement des flottants qu'avec les autres navigateurs.
Le layout est un concept relativement complexe. Vous trouverez de plus amples informations et exemples sur les conséquences du layout sur le site de Laurent Denis.
La page 4 de cette série d'exemple traite également (très rapidement) de ce problème de layout.