TechWeb
Accueil Codage HTML CSS DESIGN XML LaboCSS

Les marges

Marges extérieures (margin) et intérieures (padding)

schema margin padding

Les propriétés de marge ne sont pas hérités.

Les marges intérieures : padding

Elles déterminent l'espacement entre le bord de la boite de l'élément et son contenu.

Lorsqu'on modifie les marges intérieures les dimensions de l'élément changent. Les conséquences de ce redimensionnement sur le positionnement des élements suivants varie selon qu'il s'agisse d'un élément de bloc ou d'un élément incorporé.

Les marges intérieures ne sont pas héritées

Eléments de bloc

Elément de bloc temoin avec des marges intérieures et extérieures fixées à 0px :
Elément de bloc suivant dont on observe le positionnement par rapport à l'élément témoin
Elément de bloc témoin avec des marges intérieures fixées à 20px :
Elément de bloc suivant dont on observe le positionnement par rapport à l'élément témoin

Conclusion : lorsque des marges intérieures sont appliquées à un élément de bloc, les éléments suivants sont repositionnés de sorte à prendre en compte le changement de dimension de l'élément.

Eléments incorporés

Elément de bloc contenant l' Elément temoin - padding:0px; et du texte qui peut s'étendre sur plusieurs lignes.   ... ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ...
Elément de bloc suivant dont on observe le positionnement par rapport à l'élément témoin
Elément de bloc contenant l'Elément temoin - padding-left:50px; padding-right:50pxet du texte qui peut s'étendre sur plusieurs lignes.   ... ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ...
Elément de bloc suivant dont on observe le positionnement par rapport à l'élément témoin
Elément de bloc contenant l'Elément temoin - padding-top:20px; padding-bottom:20px et du texte qui peut s'étendre sur plusieurs lignes.   ... ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ...
Elément de bloc suivant dont on observe le positionnement par rapport à l'élément témoin
Elément de bloc contenant l'Elément temoin - padding-top:20px; padding-bottom:20px; padding-left:50px; padding-right:50px;et du texte qui peut s'étendre sur plusieurs lignes.   ... ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ... ...  ...
Elément de bloc suivant dont on observe le positionnement par rapport à l'élément témoin

Conclusion : lorsque des marges intérieures sont appliquées à un élément incorporé, l'élément incorporé suivant subit un décalage horizontal, mais maitient sa position verticale. La position de l'élément de bloc suivant reste inchangée.

Les marges extérieures : margin

Elles déterminent l'espacement entre le bord de la boite de l'élément et celui des boites précédentes, suivante ou parente selon le contexte. Les marges peuvent prendre des valeurs négatives.

Eléments de bloc

marges verticales positives :

L'espacement vertical entre deux éléments de bloc consécutifs est déterminé par la propriété "margin-bottom" du premier élément et la propriété margin-top du second élément.

premier élément : margin-bottom : 0px
second élément : margin-top : 0px
premier élément : margin-bottom : 30px
second élément : margin-top : 0px
premier élément : margin-bottom : 30px
second élément : margin-top : 20px
premier élément : margin-bottom : 30px
second élément : margin-top : 50px

conclusion : l'espacement vertical entre deux blocs consécutifs  dont les marges adjacentes sont positives :

espacement = maximum (margin-bottom de l'élément1, margin-top de l'élément 2.

marges verticales négatives :

premier élément : margin-bottom : 0px
second élément : margin-top : 0px
premier élément : margin-bottom : -50px
second élément : margin-top : 0px
premier élément : margin-bottom : -50px
second élément : margin-top : -30px
premier élément : margin-bottom : -50px
second élément : margin-top : -80px

conclusion : l'espacement vertical entre deux blocs consécutifs  dont les marges adjacentes sont négatives :

espacement = minimum (margin-bottom de l'élément1, margin-top de l'élément 2.

marges verticales de signe opposé :

premier élément : margin-bottom : 50px
second élément : margin-top : -30px
premier élément : margin-bottom : -30px
second élément : margin-top : 50px

conclusion : l'espacement vertical entre deux blocs consécutifs  dont les marges adjacentes sont de signe opposé :

espacement = margin-bottom de l'élément1 + margin-top de l'élément 2.

marges horizontales

Sauf dans le cas d'élements flottants, les éléments de bloc n'ont ni prédécesseur à gauche, ni successeur à droite, ces derniers étant respectivement au dessus et en dessous.

Les marges horizontales sont donc définies par rapport à l'élément de bloc parent.

Elément parent avec un des marges intérieures de 30px;
Elément enfant avec une marge exterieure gauche et droite de 20px
Elément parent avec un des marges intérieures de 30px;
Elément enfant avec une marge exterieure gauche et droite de -20px

conclusion : l'espacement horizontal entre un élément de bloc et sont parent :

espacement à gauche = padding-left de l'élément parent + margin-left de l'élément enfant

espacement à droite = padding-right de l'élément parent + margin-right de l'élément enfant

marges horizontales pour des éléments flottants à gauche

float:left; margin : 0px;
float:left; margin : 0px;
float:left; margin : 0px;

float:left; margin-left : 20px;
float:left; margin-left : 20px;
float:left; margin-left : 20px;

float:left; margin-left:20px; margin-right:20px;
float:left; margin-left : 20px; margin-right:20px;
float:left; - margin-left : 20px; margin-right:20px;

float:left; margin-left:20px; margin-right:-20px;
float:left; margin-left : 20px; margin-right:-20px;
float:left; - margin-left : 20px; margin-right:-20px;

float:left; margin-left:20px; margin-right:-40px;
float:left; margin-left : 20px; margin-right:-40px;
float:left; - margin-left : 20px; margin-right:-40px;

conclusion : l'espacement entre deux éléments flottants à gauche :

espacement = margin-right de l'élément de gauche + margin-left de l'élément suivant situé à droite

la marge gauche du premier élément flottant à gauche détermine sa position par rapport à l'élément parent

marges horizontales pour des éléments flottants à droite

float:right; margin : 0px;
float:right; margin : 0px;
float:right; margin : 0px;

float:right; margin-left : 20px;
float:right; margin-left : 20px;
float:right; margin-left : 20px;

float:right; margin-left:20px; margin-right:20px;
float:right; margin-left : 20px; margin-right:20px;
float:right; - margin-left : 20px; margin-right:20px;

float:right; margin-left:20px; margin-right:-20px;
float:right; margin-left : 20px; margin-right:-20px;
float:right; - margin-left : 20px; margin-right:-20px;

float:right; margin-left:20px; margin-right:-40px;
float:right; margin-left : 20px; margin-right:-40px;
float:right; - margin-left : 20px; margin-right:-40px;

conclusion : l'espacement entre deux éléments flottants à droite :

espacement = margin-right de l'élément de gauche + margin-left de l'élément situé à droite qui est le prédécesseur de l'élément situé à gauche

la marge droite du dernier élément flottant à droite contraint sa position par rapport à l'élément parent

Eléments incorporés

Elément de bloc avec un élément incorporé - margin:0px; et un autre élément incorporé - margin:0px; en son sein
Element de bloc suivant - margin : 0px;
Elément de bloc avec un élément incorporé - margin:20px; et un autre élément incorporé - margin:30px; en son sein
Element de bloc suivant - margin : 0px;
Elément de bloc avec un élément incorporé - margin:20px; et un autre élément incorporé - margin:-30px;
Element de bloc suivant - margin : 0px;

conclusion : 

l'espacement horizontal entre deux éléments incorporés consécutif =  margin-right de l'élément de gauche + margin-left de l'élément suivant

les marges verticales ne s'appliquent pas aux éléments incorporés

les marges extérieures ne sont pas héritées

Regroupement des déclarations

margin

Les propriétés margin-top, margin-right, margin bottom, margin-left peuvent être regroupées en une selon déclaration margin

Ainsi margin:20px; est équivalent aux quatre déclarations :

Une ou plusieurs valeurs peuvent être précisées. Les marges s'appliquent alors selon les règles suivantes

margin-top margin-right margin-bottom margin-left
margin:marg1; marg1 marg1 marg1 marg1
margin:marg1 marg2 marg1 marg2 marg1 marg2
margin:marg1 marg2 marg3 marg1 marg2 marg3 marg2
margin:marg1 marg2 marg3 marg4 marg1 marg2 marg3 marg4

padding

Le regroupement des propriétés des marges intérieures (padding) suit les mêmes règles que celles des propriétés des marges extérieures (margin) décrites ci-dessus.

Valid XHTML 1.0 Strict Valid CSS!

Copyright Gabriel Braun 2007