Le positionnement absolu signifie que l'élément est complètement retiré du flux normal de la mise en page. En ce qui concerne le reste des éléments de la page, l'élément absolument positionné n'existe tout simplement pas. L'élément lui-même est ensuite dessiné séparément, sorte de "au-dessus" de tout le reste, à la position que vous spécifiez à l'aide des left, right, top and bottom
attributs.
En utilisant la position que vous spécifiez avec ces attributs, l'élément est ensuite placé à cette position dans son dernier élément ancêtre qui a un attribut de position autre que static
(les éléments de page par défaut sont statiques lorsqu'aucun attribut de position n'est spécifié), ou le corps du document (navigateur viewport) si aucun ancêtre de ce type n'existe.
Par exemple, si j'avais ce code:
<body>
<div style="position:absolute; left: 20px; top: 20px;"></div>
</body>
... le <div>
serait positionné à 20px du haut de la fenêtre du navigateur et à 20px du bord gauche de celui-ci.
Cependant, si j'ai fait quelque chose comme ça:
<div id="outer" style="position:relative">
<div id="inner" style="position:absolute; left: 20px; top: 20px;"></div>
</div>
... alors le inner
div serait positionné à 20px du haut du outer
div et à 20px du bord gauche de celui-ci, car le outer
div n'est pas positionné avec position:static
parce que nous l'avons explicitement défini pour l'utiliser position:relative
.
Le positionnement relatif, par contre, revient à ne pas indiquer de positionnement du tout, mais les left, right, top and bottom
attributs "poussent" l'élément hors de sa disposition normale. Le reste des éléments de la page est toujours disposé comme si l'élément était à son emplacement normal.
Par exemple, si j'avais ce code:
<span>Span1</span>
<span>Span2</span>
<span>Span3</span>
... alors les trois <span>
éléments seraient assis côte à côte sans se chevaucher.
Si je configure le second <span>
pour utiliser le positionnement relatif, comme ceci:
<span>Span1</span>
<span style="position: relative; left: -5px;">Span2</span>
<span>Span3</span>
... alors Span2 chevaucherait le côté droit de Span1 de 5px. Span1 et Span3 se trouveraient exactement au même endroit que dans le premier exemple, laissant un espace de 5px entre le côté droit de Span2 et le côté gauche de Span3.
J'espère que cela clarifie un peu les choses.