Чем отличаются значения position в CSS?
JuniorCSS #css #positioning
Вопрос
Чем отличаются static, relative, absolute, fixed и sticky?
Короткий ответ
position определяет, как элемент участвует в потоке документа и относительно чего вычисляются top/left/right/bottom.
Подробный ответ
static(по умолчанию) — элемент в обычном потоке,top/leftне действуют.relative— остаётся в потоке, но может смещаться относительно своей исходной позиции черезtop/left. Также создаёт систему координат для потомков сabsolute.absolute— вырывается из потока, позиционируется относительно ближайшего предка сpositionотличным отstatic(или<html>, если такого нет).fixed— вырывается из потока, позиционируется относительно окна просмотра (viewport) и не двигается при скролле.sticky— гибридrelativeиfixed: ведёт себя какrelative, пока не достигнет заданного порога (top: 0), затем "прилипает" какfixedв пределах родителя.
Пример
.dropdown {
position: relative; /* якорь для меню */
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
}
.header {
position: sticky;
top: 0;
}
Дополнительные вопросы
- Почему
stickyиногда "не работает"? - Что такое контекст наложения (stacking context) и как на него влияет
position? - Как
position: absoluteвзаимодействует сz-index?