Résultat du test: Il est préférable de ne pas appliquer de marge à un élément définissant un contexte de formatage, lorsque cette marge doit interagir avec un flottant.
Pour créer un écart entre le flottant et le bloc, on pourra cependant attribuer la marge directement au flottant.
En détail
Cette page teste l'interprétation des marges pour un élément qui définit un
contexte de formatage, via la propriété CSS
overflow
avec les valeurs hidden
ou
auto
.
D'un navigateur à l'autre, on observe des différences de comportement dans l'application des marges latérales du bloc qui définit le contexte de formatage, lorsque ces marges interagissent avec un flottant.
La notion de contexte de formatage est définie ici: Float, clear et contextes de formatage – qu'est-ce qu'un contexte de
formatage ?.
On notera qu'Internet Explorer 6, contrairement à la version 7, ne permet pas de
définir un contexte de formatage via la propriété overflow
.
Note: les tests suivant font également référence à la notion de HasLayout (via le terme de layout).
Les tests
Test 1 (un flottant)
Résultats:
- Firefox 2: OK.
- Opera 9: la marge de gauche est absente, et celle de droite est doublée à 60px!
- Safari 3b: la marge de gauche est absente, et celle de droite est doublée à 60px!
- Internet Explorer 7: la marge de gauche est ignorée.
- Internet Explorer 6: pas de problème de marge, mais le contexte de formatage n'est pas appliqué et le deuxième bloc passe sous le flottant.
Test 2 (un flottant)
Résultats:
- Firefox 2: OK.
- Opera 9: OK.
- Safari 3b: OK.
- Internet Explorer 7: OK.
- Internet Explorer 6: pas de problème de marge, mais le contexte de formatage n'est pas appliqué et le deuxième bloc passe sous le flottant.
Test 3 (deux flottants)
Résultats:
- Firefox 2: OK.
- Opera 9: aucune marge n'est appliquée.
- Safari 3b: la marge de gauche est absente, et celle de droite est doublée à 60px!
- Internet Explorer 7: aucune marge n'est appliquée.
- Internet Explorer 6: pas de problème de marge, mais le contexte de formatage n'est pas appliqué et le deuxième bloc passe sous les flottants.
Test 4 (deux flottants)
Résultats:
- Firefox 2: OK.
- Opera 9: OK.
- Safari 3b: OK.
- Internet Explorer 7: OK.
- Internet Explorer 6: pas de problème de marge, mais le contexte de formatage n'est pas appliqué et le deuxième bloc passe sous les flottants.
Test 5 (un flottant, contexte de formatage + HasLayout)
Ce test reprend le test 1, et ajoute le layout au bloc qui définit un contexte de formatage. Avec tous les navigateurs à l'exception d'Internet Explorer: les comportements sont inchangés par rapport au test 1. (Rappel: le HasLayout est un concept propre à Internet Explorer pour Windows).
Résultats:
- Internet Explorer 7: pas de changement particulier par rapport au test 1: la marge de gauche est toujours ignorée, et celle de droite correctement appliquée.
- Internet Explorer 7: la marge de gauche est ignorée, et celle de droite correctement appliquée.
Dans le cas d'Internet Explorer 6, on notera un décalage de trois pixels dû au fameux bug du Three Pixel Jog. Nous avons ignoré ce bug «marginal» dans les résultats ci-dessus. Ce bug est corrigé dans IE7.