Свойство
position
Задаёт, как элемент позиционируется — в обычном потоке, со сдвигом, относительно предка, окна или прилипая при прокрутке.
Пример
Метка «Новинка» в углу карточки:
<div class="card">
Карточка товара
<span class="card__badge">Новинка</span>
</div>.card {
position: relative;
padding: 2rem 1rem 1rem;
border: 1px solid;
}
.card__badge {
position: absolute;
top: 0.5rem;
right: 0.5rem;
padding: 0 0.5rem;
background: gold;
}Результат
Синтаксис
position: static | relative | absolute | sticky | fixed | <running()>;- Начальное значение
- static
- Применяется к
- всем элементам, кроме колонок и групп колонок таблицы
- Наследуется
- нет
- Анимируется
- дискретно
- Вычисляемое значение
- как указано
Положение позиционированного элемента задают свойства top, right, bottom, left или сокращение inset. У position: static они не действуют.
Значения
static- Обычное место в потоке. Смещения не работают. Значение по умолчанию.
relative- Элемент остаётся в потоке, а смещения сдвигают его относительно своего обычного места. Соседи этого не замечают. Главное применение — сделать элемент точкой отсчёта для абсолютно позиционированных потомков.
absolute- Элемент выпадает из потока, соседи смыкаются. Смещения отсчитываются от ближайшего позиционированного предка (у которого
positionнеstatic), а если такого нет — от начального содержащего блока. fixed- Как
absolute, но отсчёт от окна браузера: элемент не двигается при прокрутке. sticky- Элемент в потоке, пока не доскроллили до порога, заданного смещением. Дальше он «прилипает» и держится у края, пока не кончится его родитель.
Как понять
Позиционирование отвечает на два вопроса: остаётся ли элемент в потоке и от чего отсчитываются top, left и остальные.
| Значение | В потоке | Отсчёт от |
|---|---|---|
static |
да | смещения не работают |
relative |
да | своего обычного места |
absolute |
нет | ближайшего позиционированного предка |
fixed |
нет | окна браузера |
sticky |
да | ближайшего прокручиваемого предка, в пределах родителя |
Позиционированные элементы рисуются поверх непозиционированных. Порядок наложения между ними задаёт z-index.
Примеры
Прилипающий заголовок
Прокрутите блок — заголовки разделов прилипают к верху:
<div class="list">
<div class="list__title">А</div>
<p>Абрикос</p>
<p>Айва</p>
<p>Ананас</p>
<div class="list__title">Б</div>
<p>Банан</p>
<p>Барбарис</p>
<p>Брусника</p>
<div class="list__title">В</div>
<p>Виноград</p>
<p>Вишня</p>
</div>.list {
height: 10rem;
overflow: auto;
border: 1px solid;
}
.list__title {
position: sticky;
top: 0;
margin: 0;
padding: 0.25rem 0.5rem;
background: lightsteelblue;
}
.list p {
margin: 0.5rem;
}Результат
Растянуть слой на весь родитель
inset: 0 — то же, что top, right, bottom и left равны нулю. Так делают затемнение поверх картинки:
<div class="photo">
<div class="photo__shade">Подпись поверх фото</div>
</div>.photo {
position: relative;
height: 8rem;
background: linear-gradient(135deg, skyblue, seagreen);
}
.photo__shade {
position: absolute;
inset: 0;
display: grid;
place-items: end start;
padding: 1rem;
color: white;
background: rgb(0 0 0 / 0.35);
}Результат
Подсказки
absoluteбез позиционированного предка отсчитывается от начала страницы — поэтому родителю обычно ставятposition: relative.stickyне работает, если у предка между элементом и прокручиваемой областью стоитoverflow: hiddenилиauto, и если не задан порог (top,bottom).fixedломается внутри предка сtransform,filterилиperspective: такой предок становится точкой отсчёта вместо окна.position: relativeиz-indexсоздают новый контекст наложения —z-indexпотомков сравнивается только внутри него.
Поддержка браузерами
| Возможность | Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | Samsung Internet | Opera |
|---|---|---|---|---|---|---|---|---|
| position | 1 | 12 | 1 | 1 | 18 | 1 | 1.0 | 4 |
| absolute | 1 | 12 | 1 1 2 | 1 | 18 | 1 | 1.0 | 15 |
| Абсолютно позиционированные дети флекс-контейнера | 52 | 12 | 52 | 11 | 52 | 11 | 6.0 | 39 |
| fixed | 1 | 12 | 1 3 | 1 | 18 | 1 | 1.0 | 4 |
| position: sticky у элементов таблицы | 56 | 16 | 59 4 | 8 | 56 | 8 | 6.0 | 43 |
| relative | 1 | 12 | 1 | 1 | 18 | 1 | 1.0 | 15 |
| static | 1 | 12 | 1 | 1 | 18 | 1 | 1.0 | 15 |
| sticky | 56 | 16 | 32 | 13 5 | 56 | 13 6 | 6.0 | 43 |
Примечания
- Firefox: До Firefox 57 абсолютное позиционирование работало неправильно у элементов внутри таблиц с
border-collapse(ошибка 1379306). - Firefox: До Firefox 30 абсолютное позиционирование строк и групп строк таблицы не поддерживалось (ошибка 63895).
- Firefox: До Firefox 44
position: fixedв большинстве случаев не создавал контекст наложения. Firefox и спецификацию изменили, чтобы повторить давнее поведение Chrome и Safari. - Firefox: Рамки не отображаются у заголовков таблицы, если
border-collapseравноcollapse(ошибка 1727594). - Safari: С префиксом -webkit- — с версии 7.
- Safari iOS: С префиксом -webkit- — с версии 7.
Яндекс Браузер работает на Chromium и поддерживает то же, что Chrome той же версии. Данные: MDN browser-compat-data 8.1.2, обновлено 17 сентября 2026 г.