PRATIQUE CLIENTS WEB 
Le point sur le positionnement CSS et Box-model
 
"Pouvez-vous m'expliquez le positionnement relatif des boites en CSS ?" (23/11/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Une mise en page en CSS fonctionne avant tout au sein d'un flux principal : les éléments se suivent naturellement, et les règles qu'on leur applique permettent de contrôler plus ou moins fortement cet "écoulement".

Mais pour bien comprendre le positionnement en CSS, et particulièrement celui des boîtes, il est nécessaire de connaître et comprendre le modèle de boîte, ou box model (lire notre article du 17/09/03). En effet, tous les éléments au sein d'une mise en page CSS sont considérés comment contenus dans une boîte rectangulaire, définie par différentes valeurs de tailles : ses marges, ses bordures, son remplissage, et enfin son contenu.

Marges, block, inline
Marges, bordures et remplissage peuvent tous prendre une valeur nulle, mais dès que celle-ci est positive, leur influence sur la taille du rectangle, et donc sur l'ensemble de la mise en page, est à prendre en compte - particulièrement à cause du bug d'interprétation d'Internet Explorer.

Ensuite, il faut savoir que les boîtes peuvent se trouver sous deux formes : bloc et en-ligne (block et inline, respectivement). Ainsi la boîte associée aux balises p, div, h1 ou ul, par exemple, sera de type "block", tandis que des balises comme img, span ou input appartiennent au type "inline". La différence fondamentale se retrouve dans leur interprétation : les blocs sont toujours placés les uns par-dessus les autres, tandis que les en-ligne peuvent se suivre côte à côte (une image au sein d'un texte, par exemple).

Et la cascade dans tout ça ?
Il faut par la suite intégrer le concept de cascade, cher à CSS. Chaque élément subit l'influence des éléments qui le contiennent, et influe ses descendants. Une règle appliquée à un élément aura donc de forte de chance de s'appliquer également aux balises de même type qu'il contient.

Le flux principal dont nous parlions prend alors toute son importance. Si un élément reste dans le flux normal, il s'affichera après l'élément qui le précède dans le code HTML, et le positionnement qu'on lui appliquera se fera par rapport à son élément conteneur. Mais il est également possible de sortie un élément du flux normal.
La propriété Float d'un bloc permet ainsi de faire s'écouler les blocs à droite ou gauche d'un autre, et d'éviter qu'ils se superposent simplement.

Il est ensuite possible d'appliquer des règles de positionnement fixe, absolu ou relatif avec l'attribut position. L'élément sort du flux, et il peut alors devenir délicat d'apprécier sa mise en page. Quand un élément est spécifié comme relatif, il reste cependant dans le flux, car il est toujours dépendant des éléments qui l'entourent, mais peut être décalé de sa position "normale" via les propriétés top ou bottom, et left ou right, dont les valeurs offrent une distance à prendre avec le flux normal. Ici encore, malheureusement, certains navigateurs diffèrent dans leur manière de rendre la position relative.


Les meilleures astuces CSS sur le JDN :
- Comment appliquer les CSS d'une page web au contenu d'une iframe ?
- Comment centrer horizontalement une DIV dans une autre en CSS ?
- Comment créer un arrière-plan (backgroud) CSS extensible et adaptable ?
- Comment définir les cellpadding et cellspacing en CSS ?
- Comment modifier l'image d'un bouton input en CSS ?
- Comment rendre l'arrière-plan d'un élément semi-transparent en conservant le texte de cet élément opaque en CSS ?
- Internet Explorer supporte-t-il l'attribut CSS border-radius
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page