Junior
Quelle est la différence entre les différentes méthodes de positionnement des éléments en CSS?
sobes.tech IA
Réponse de l'IA
static- Position par défaut. L'élément est positionné selon le flux normal du document. Les propriétéstop,right,bottom,leftn'ont pas d'effet.relative- L'élément est positionné par rapport à sa position normale dans le flux. Les propriétéstop,right,bottom,leftdéplacent l'élément depuis sa position d'origine, mais l'espace qu'il occupe dans le flux est conservé.absolute- L'élément est complètement retiré du flux normal du document. Sa position est déterminée par les propriétéstop,right,bottom,leftpar rapport à l'ancêtre positionné le plus proche (avecposition: relative,absolute,fixedousticky). S'il n'y a pas d'ancêtres, la position est relative au bloc initial<html>.fixed- L'élément est complètement retiré du flux normal du document. Sa position est déterminée par les propriétéstop,right,bottom,leftpar rapport à la fenêtre d'affichage (viewport). L'élément reste en place lors du défilement de la page.sticky- L'élément est positionné commerelativejusqu'à ce qu'il atteigne la position définie partop,right,bottom,left, après quoi sa position devientfixed.
Tableau des différences:
| Propriété | static |
relative |
absolute |
fixed |
sticky |
|---|---|---|---|---|---|
| Flux du document | Normal | Maintient | Se retire | Se retire | D'abord normal, puis se retire |
Déplacement (top etc.) |
Non | Par rapport à lui-même | Par rapport à l'ancêtre/viewport | Par rapport au viewport | Par rapport à lui-même, puis au viewport |
| Lors du défilement | Défile | Défile | Reste en place (si l'ancêtre est fixed) ou défile avec l'ancêtre |
Reste en place | D'abord défile, puis reste en place |
Exemple:
.static-box {
position: static; /* Position par défaut */
width: 100px;
height: 100px;
background-color: lightblue;
}
.relative-box {
position: relative;
top: 20px; /* Déplacement vers le bas depuis la position normale */
left: 20px; /* Déplacement vers la droite depuis la position normale */
width: 100px;
height: 100px;
background-color: lightgreen;
}
.absolute-container {
position: relative; /* Ancêtre positionné */
width: 300px;
height: 300px;
border: 1px solid black;
}
.absolute-box {
position: absolute;
top: 50px; /* Par rapport au conteneur */
left: 50px; /* Par rapport au conteneur */
width: 50px;
height: 50px;
background-color: lightcoral;
}
.fixed-box {
position: fixed;
bottom: 10px; /* Par rapport à la fenêtre d'affichage */
right: 10px; /* Par rapport à la fenêtre d'affichage */
width: 70px;
height: 70px;
background-color: lightsalmon;
}
.sticky-header {
position: sticky;
top: 0; /* Adhère en haut du viewport */
height: 50px;
background-color: lightgoldenrodyellow;
z-index: 10; /* Pour superposer d'autres éléments lors de l'adhérence */
}