CSS : Quel positionnement choisir ?
Le CSS-P (Positionnement CSS) propose plusieurs méthodes pour placer les différents objets de son document.
Entre le positionnement absolu, relatif, fixé, et les positionnements flottants et à l'aide des marges, il est souvent difficile de faire son choix et de ne pas s'embrouiller.
Nous allons essayer de débroussailler ces différentes techniques afin d'y voir plus clair et de choisir la bonne méthode selon les cas...
Préambule : ce petit explicatif nécessite la connaissance préalable des différents positionnements et des balises bloc et en-ligne. Vous trouverez ces connaissances sur le site de référence OpenWeb, ou encore dans les tutoriels d'Alsacréations.
Le positionnement dans le flux
Le positionnement dans le flux, décrit sur le site d'Openweb ou encore ici-même, utilise les marges (margin) de l'élément pour le placer par rapport aux autres éléments.
Les marges sont à utiliser de préférence pour tous les éléments internes de la page : les textes, les images, bref : le contenu en général et les éléments en-ligne.
Un élément placé à l'aide de marges reste dans le flux du code HTML, il est donc dépendant de l'élément parent (conteneur) et des éléments frères.
Notons qu'une valeur spécifique de la propriété "margin", la valeur "auto", permet de centrer les éléments dans leur conteneur. Voir à ce sujet, le tutoriel sur le centrage.
Le positionnement relatif est hybride : par défaut, il laisse l'élément tel quel dans le flux. Cependant, permet de "décaler" cet élément dans le flux, mais uniquement si on donne une valeur à "top", "left", "right" ou "bottom", tout en le laissant dépendant des autres éléments positionnés. Pour ma part, j'évite ce positionnement car souvent inutile.
Le positionnement absolu et fixé
Ces positionnements sortent l'élément du flux : il n'est plus dépendant des autres éléments qui l'entourent (frères). Un tel élément est appelé "positionné" (notez qu'un élément en relatif est également dit "positionné" tout en restant dans le flux).
Un élément positionné se place par rapport à son premier ancêtre positionné.
Le Positionnement fixé (position: fixed) ne fonctionne pas sur Internet Explorer sans hacks et bidouillages. Il est donc préférable de s'en passer pour l'instant afin de ne pas être ennuyé.
Le positionnement absolu (position : absolute), est lui, bien plus intéressant et pratique. Il est idéal pour placer tous les conteneurs généraux, les grandes zones de la page, les éléments uniques (en-tête, menu, pied de page, ...).
Il faut cependant toujours éviter de placer les éléments internes et en-ligne à l'aide du positionnement absolu : dans ce cas, utilisez de préférence le positionnement à l'aide des marges.
Sachez également que les propriétés "top", "left" et "z-index" ne fonctionnent que si l'élément est "positionné" (position : absolute, relative ou fixed). Dans tous les autres cas, ces trois propriétés n'ont aucun effet.
Le positionnement flottant
Le positionnement flottant est un positionnement intermédiaire entre les positionnements absolus et avec marges.
L'élément sort du flux, mais reste dépendant des autres éléments flottants. On peut donc s'en servir pour placer plusieurs objets côte à côte très simplement.
Le positionnement flottant peut servir à placer des conteneurs tout autant que des éléments internes de contenu, mais attention car ce positionnement présente, selon les cas, des bugs sur certains navigateurs et nécessite des arrangements pour satisfaire certains défauts d'affichage (utilisation de "spacers")
A noter également qu'il n'existe que deux placements possibles : gauche et droite, et que la valeur "centré" n'existe pas.
Tableau récapitulatif
| Conteneurs et blocs | Elements internes, contenu | Centrage | Spécificités | |
| Marges (margin, margin: auto) | Non | Oui | Oui, centrage des éléments internes avec margin auto (incompatible avec "position") | Reste dans le flux. Se positionne par rapport à l'élément parent (conteneur) et aux éléments frères |
| Position absolute | Oui | Non | Oui, centrage des blocs à l'aide des marges négatives, incompatible avec le centrage en margin auto | Sort du flux. Positionnement avec top, left (+ marges possible), superpositions possibles |
| Position relative | Non | Oui | Oui, centrage compatible avec margin auto (compatible avec "position") | Est décallé dans le flux + dépend de l'élément précédent s'il est positionné. |
| Position fixed | Non | Non | Non | Sort du flux tout en restant dans son bloc parent. Pose des problèmes sur Internet Explorer. |
| Position avec Float | Oui | Oui | Non | Sort du flux. Pas de float center. Attentions aux défauts d'affichages |
Attention : ce tableau récapitulatif n'est qu'indicatif et approximatif. Il ne s'agit que d'une interprêtation personnelle fondée sur l'expérience. Certains spécialistes peuvent procéder de façon différente et tout à fait justifiée. Sachez cependant que ce tableau est fait pour vous simplifier la vie et éviter de vous embrouiller inutilement.
Par Raphael GOETTER - mercredi 14 juillet 2004 à 18:00
Astuces - #42 - Lu 22368 fois - Intérêt du billet: 2.53(51) - Fil RSS




Trackbacks
Le jeudi 15 juillet 2004 à 08:09, de Java et Companie :: #
Les trackbacks pour ce billet sont fermés.
Evaluez ce billet
Commentaires
Le mercredi 14 juillet 2004 à 18:14, par ElMoustiko :: site :: #
Le mercredi 14 juillet 2004 à 18:26, par Sibelius :: site :: #
Le mercredi 14 juillet 2004 à 22:07, par Laurent Denis :: site :: #
Le jeudi 15 juillet 2004 à 09:44, par Yeca :: site :: #
Le jeudi 15 juillet 2004 à 10:01, par Ldo :: site :: #
Le jeudi 15 juillet 2004 à 10:17, par Laurent Denis :: #
Le jeudi 15 juillet 2004 à 10:31, par Ldo :: site :: #
Le vendredi 16 juillet 2004 à 09:35, par Jep :: site :: #
Le vendredi 16 juillet 2004 à 13:28, par ElMoustiko :: site :: #
Le mercredi 21 juillet 2004 à 18:22, par Kévin :: #
Le mercredi 21 juillet 2004 à 21:15, par Sibelius :: site :: #
Le dimanche 25 juillet 2004 à 12:23, par vchahun :: site :: #
Le dimanche 25 juillet 2004 à 19:05, par Sibelius :: site :: #
Le mercredi 18 août 2004 à 11:24, par kurt :: #
Le mercredi 18 août 2004 à 12:24, par Raphael Goetter :: site :: #
Le mercredi 18 août 2004 à 12:37, par Laurent Denis :: #
Le mercredi 18 août 2004 à 12:54, par Raphael Goetter :: site :: #
Le mercredi 18 août 2004 à 14:22, par Laurent Denis :: #
Le mercredi 18 août 2004 à 14:37, par Raphael Goetter :: site :: #
Le mercredi 18 août 2004 à 15:09, par Laurent Denis :: #
Le mercredi 18 août 2004 à 20:12, par Laurent Denis :: #
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.