Junior
Jaký je rozdíl mezi různými způsoby umístění prvků v CSS?
sobes.tech AI
Odpověď od AI
static- Výchozí poloha. Prvek je umístěn podle standardního toku dokumentu. Vlastnostitop,right,bottom,leftneovlivňují.relative- Prvek je umístěn relativně k jeho normální pozici v toku. Vlastnostitop,right,bottom,leftposunou prvek od jeho původní pozice, ale místo, které zabírá v toku, zůstává.absolute- Prvek je úplně odstraněn z normálního toku dokumentu. Jeho pozice je určena vlastnostmitop,right,bottom,leftvzhledem k nejbližšímu pozicovanému rodiči (sposition: relative,absolute,fixednebosticky). Pokud takoví rodiče nejsou, pozice je určena vzhledem k počátečnímu bloku<html>.fixed- Prvek je úplně odstraněn z normálního toku dokumentu. Jeho pozice je určena vlastnostmitop,right,bottom,leftvzhledem k oknu prohlížeče (viewport). Prvek zůstává na místě při posouvání stránky.sticky- Prvek je pozicován jakorelative, dokud při posouvání nedosáhne zadané pozice (určenétop,right,bottom,left), poté se jeho pozice stáváfixed.
Tabulka rozdílů:
| Vlastnost | static |
relative |
absolute |
fixed |
sticky |
|---|---|---|---|---|---|
| Tok dokumentu | Obvyklý | Zachovává | Odstraňuje se | Odstraňuje se | Nejprve obvyklý, pak odstraňuje |
Posun (top apod.) |
Ne | Relativně k sobě | Relativně k rodiči/viewportu | Relativně k viewportu | Relativně k sobě, pak k viewportu |
| Při posouvání | Posouvá se | Posouvá se | Zůstává na místě (pokud rodič fixed) nebo se posouvá s rodičem |
Zůstává na místě | Nejprve se posouvá, pak zůstává na místě |
Příklad:
.static-box {
position: static; /* Výchozí poloha */
width: 100px;
height: 100px;
background-color: lightblue;
}
.relative-box {
position: relative;
top: 20px; /* Posun dolů od normální pozice */
left: 20px; /* Posun doprava od normální pozice */
width: 100px;
height: 100px;
background-color: lightgreen;
}
.absolute-container {
position: relative; /* Pozicovaný rodič */
width: 300px;
height: 300px;
border: 1px solid black;
}
.absolute-box {
position: absolute;
top: 50px; /* Vztah k kontejneru */
left: 50px; /* Vztah k kontejneru */
width: 50px;
height: 50px;
background-color: lightcoral;
}
.fixed-box {
position: fixed;
bottom: 10px; /* Vztah k viewportu */
right: 10px; /* Vztah k viewportu */
width: 70px;
height: 70px;
background-color: lightsalmon;
}
.sticky-header {
position: sticky;
top: 0; /* Přilepí se k horní části viewportu */
height: 50px;
background-color: lightgoldenrodyellow;
z-index: 10; /* Překrývá jiné prvky při přilepení */
}