Sylvain a écrit :
Je n'arrive pas a comprendre la singularité de cet exemple de Laurent Denis.
Ni ce qui le fait marcher, mais je cherche !
lol. Je suppose que quelques explications seront les bienvenues
Cet exemple repose simplement sur l'utilisation de la position relative pour intervertir les colonnes affichées à gauche et au centre. Il faut se souvenir que la position relative fonctionne en deux temps :
- les éléments sont placés (en flux ou en flottant) comme s'il n'y avait pas de position relative
- puis ils sont décalés vers le haut, le bas, la droite, la gauche, selon les valeurs indiquées, et sans que cela n'entraîne aucune modification des autres éléments.
Ici, avant la position relative :
- la colonne "contenu central" s'affiche à gauche, puisqu'elle est en tête de contenu et en float:left
- la colonne "menu gauche" s'affiche au centre, puisqu'elle suit immédiatement la précédente dans l'ordre HTML et qu'elle est également flottante.
Après la position relative :
- la colonne "contenu central" a été déplacée vers la droite, pour occuper la position voulue, de la largeur de la colonne "menu gauche" plus ou moins quelque-chose pour gérer les effets de marge et de bordure.
- inversement, la colonne "menu gauche" a été déplacée vers la gauche de la largeur de la colonne "contenu central" plus ou moins etc.
C'est un simple échange de place. La seule difficulté est de déterminer précisément les valeurs de déplacement en fonction des largeurs de colonnes et des effets de marges recherchés.
Pour préciser rapidement les valeurs de déplacement de l'exemple :
- #gauche est déplacé de 43%, c'est à dire 5% de moins que la largeur de #centre afin de créer l'effet de marge de 5% à l'extrême gauche (et donc, l'effet de centrage du tout)
- #centre est déplacé de 26%, c'est à dire la largeur de #gauche, plus les 5% de marge extrême gauche, plus 1% de marge entre #centre et #gauche.
- #droite mesure 20% avec une marge droite de 5% qui fait pendant à la marge extrême gauche, pour l'effet de centrage. Le fait de flotter à droite permet de réserver la marge intérieure de 1% entre #centre et #droite.
- une valeur de marge diminuée de moitié est adressée à IE Windows pour #droite, afin de compenser le bug de la double marge des flottants. Un display-inline appliqué au flottant règlerait tout aussi bien le bug.
Au passage, cet exemple de mise en page aurait besoin d'être dépoussiéré : il est possible de gérer beaucoup plus proprement le rendu dans IE 5.x et 6.0, sans hack, avec une CSS en commentaires conditionnels.
Modifié par Laurent Denis (09 Sep 2005 - 06:15)