Junior
Koja je razlika između različitih načina pozicioniranja elemenata u CSS?
sobes.tech АИ
Одговор од АИ
static- Положај по подразумевану. Елемент се позиционира према стандардном току документа. Свјетлостиtop,right,bottom,leftне утичу.relative- Елемент се позиционира релативно у односу на његову нормалну позицију у току. Свјетлостиtop,right,bottom,leftпомјерају елемент од његове почетне позиције, али заузето мјесто у току остаје.absolute- Елемент се потпуно уклања из нормалног тока документа. Његова позиција се одређује својствимаtop,right,bottom,leftу односу на најближи позиционирани родитељ (саposition: relative,absolute,fixedилиsticky). Ако такви родитељи не постоје, позиција се одређује у односу на почетни блок<html>.fixed- Елемент се потпуно уклања из нормалног тока документа. Његова позиција се одређује својствимаtop,right,bottom,leftу односу на прозор прегледача (viewport). Елемент остаје на мјесту при скроловању странице.sticky- Елемент се позиционира каоrelativeдок при скроловању не достигне задату позицију (одређује сеtop,right,bottom,left), након чега његова позиција постајеfixed.
Табела разлика:
| Свјетлост | static |
relative |
absolute |
fixed |
sticky |
|---|---|---|---|---|---|
| Ток документа | Обичан | Задржава | Уклања се | Уклања се | Прво обичан, затим уклоњен |
Помјерање (top итд.) |
Не | Отпоран на себе | Отпоран на родитеља/viewport | Отпоран на viewport | Отпоран на себе, затим viewport |
| При скроловању | Скролује се | Скролује се | Остаје на мјесту (ако родитељ fixed) или се скролује са родитељем |
Остаје на мјесту | Прво се скролује, затим остаје на мјесту |
Пример:
.static-box {
position: static; /* Положај по подразумевану */
width: 100px;
height: 100px;
background-color: lightblue;
}
.relative-box {
position: relative;
top: 20px; /* Помјерање надоле од нормалног положаја */
left: 20px; /* Помјерање удесно од нормалног положаја */
width: 100px;
height: 100px;
background-color: lightgreen;
}
.absolute-container {
position: relative; /* Позиционирани родитељ */
width: 300px;
height: 300px;
border: 1px solid black;
}
.absolute-box {
position: absolute;
top: 50px; /* У односу на контејнер */
left: 50px; /* У односу на контејнер */
width: 50px;
height: 50px;
background-color: lightcoral;
}
.fixed-box {
position: fixed;
bottom: 10px; /* У односу на viewport */
right: 10px; /* У односу на viewport */
width: 70px;
height: 70px;
background-color: lightsalmon;
}
.sticky-header {
position: sticky;
top: 0; /* Лепи се за врх viewport-а */
height: 50px;
background-color: lightgoldenrodyellow;
z-index: 10; /* За преклапање других елемената приликом лепљења */
}