Position в CSS
Введение
Свойство position в CSS определяет, как элемент позиционируется в документе. Это одно из ключевых свойств для создания сложных макетов.
Значения свойства position
static
Это значение по умолчанию. Элемент следует нормальному потоку документа. Свойства top, right, bottom, left и z-index не применяются.
.element {
position: static;
}relative
Элемент позиционируется относительно своего нормального положения. Создает новый контекст наложения для дочерних элементов.
.element {
position: relative;
top: 10px;
left: 20px;
}absolute
Элемент удаляется из нормального потока документа и позиционируется относительно ближайшего позиционированного предка (не static).
.parent {
position: relative;
}
.child {
position: absolute;
top: 0;
right: 0;
}fixed
Элемент удаляется из нормального потока документа и позиционируется относительно окна просмотра (viewport).
.header {
position: fixed;
top: 0;
width: 100%;
}sticky
Гибридное позиционирование между relative и fixed. Элемент ведет себя как relative до тех пор, пока не достигнет определенного порога прокрутки, после чего ведет себя как fixed.
.nav {
position: sticky;
top: 0;
}Свойства позиционирования
top: Расстояние от верхнего края контейнераright: Расстояние от правого края контейнераbottom: Расстояние от нижнего края контейнераleft: Расстояние от левого края контейнераz-index: Определяет порядок наложения элементов
Примеры использования
Центрирование элемента
.centered {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}Фиксированная навигация
.navbar {
position: fixed;
top: 0;
left: 0;
width: 100%;
background-color: #333;
z-index: 1000;
}Липкий заголовок
.section-header {
position: sticky;
top: 0;
background-color: white;
padding: 10px;
z-index: 10;
}Практические советы
- Всегда указывайте хотя бы одно из свойств
top,right,bottomилиleftпри использованииposition: absoluteилиposition: fixed. - Для
position: absoluteубедитесь, что родительский элемент имеетpositionотличное отstatic. - Используйте
z-indexдля управления порядком наложения элементов. - Помните, что
position: fixedможет вести себя иначе на мобильных устройствах из-за виртуальной клавиатуры и других факторов. position: stickyтребует указания порога (например,top: 0), чтобы работать правильно.