Junior
Wat is het verschil tussen de verschillende manieren van positionering van elementen in CSS?
sobes.tech AI
Antwoord van AI
static- Standaardpositie. Het element wordt gepositioneerd volgens de normale stroom van het document. De eigenschappentop,right,bottom,lefthebben geen effect.relative- Het element wordt gepositioneerd ten opzichte van zijn normale positie in de stroom. De eigenschappentop,right,bottom,leftverschuiven het element vanaf zijn oorspronkelijke positie, maar de ruimte die het inneemt in de stroom blijft behouden.absolute- Het element wordt volledig verwijderd uit de normale stroom van het document. De positie wordt bepaald door de eigenschappentop,right,bottom,leftten opzichte van de dichtstbijzijnde gepositioneerde voorouder (metposition: relative,absolute,fixedofsticky). Als er geen dergelijke voorouders zijn, wordt de positie bepaald ten opzichte van de initiële<html>-blok.fixed- Het element wordt volledig verwijderd uit de normale stroom van het document. De positie wordt bepaald door de eigenschappentop,right,bottom,leftten opzichte van het venster (viewport). Het element blijft op zijn plaats bij het scrollen van de pagina.sticky- Het element wordt gepositioneerd alsrelativetotdat het de ingestelde positie bereikt tijdens het scrollen (top,right,bottom,left), waarna de positiefixedwordt.
Tabel van verschillen:
| Eigenschap | static |
relative |
absolute |
fixed |
sticky |
|---|---|---|---|---|---|
| Documentstroom | Normaal | Behoudt | Wordt verwijderd | Wordt verwijderd | Eerst normaal, dan verwijderd |
Verschuiving (top etc.) |
Nee | Ten opzichte van zichzelf | Ten opzichte van voorouder/viewport | Ten opzichte van viewport | Ten opzichte van zichzelf, daarna viewport |
| Bij scrollen | Scrollt | Scrollt | Blijft op zijn plek (als voorouder fixed) of scrollt mee met voorouder |
Blijft op zijn plek | Eerst scrollen, daarna blijft op plek |
Voorbeeld:
.static-box {
position: static; /* Standaardpositie */
width: 100px;
height: 100px;
background-color: lightblue;
}
.relative-box {
position: relative;
top: 20px; /* Verplaatsing naar beneden vanaf normale positie */
left: 20px; /* Verplaatsing naar rechts vanaf normale positie */
width: 100px;
height: 100px;
background-color: lightgreen;
}
.absolute-container {
position: relative; /* Gepositioneerde voorouder */
width: 300px;
height: 300px;
border: 1px solid black;
}
.absolute-box {
position: absolute;
top: 50px; /* Ten opzichte van container */
left: 50px; /* Ten opzichte van container */
width: 50px;
height: 50px;
background-color: lightcoral;
}
.fixed-box {
position: fixed;
bottom: 10px; /* Ten opzichte van viewport */
right: 10px; /* Ten opzichte van viewport */
width: 70px;
height: 70px;
background-color: lightsalmon;
}
.sticky-header {
position: sticky;
top: 0; /* Plakt aan de bovenkant van viewport */
height: 50px;
background-color: lightgoldenrodyellow;
z-index: 10; /* Voor overlappen bij plakken */
}