Позиционирование: relative, absolute, fixed, sticky
Выводите элементы из обычного потока с помощью значений position, чтобы накладывать содержимое, фиксировать заголовки и создавать закреплённые боковые панели.
«Позиционирование: relative, absolute, fixed, sticky» — бесплатный урок Frontend Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Frontend Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Frontend Academy содержит 4 уроков всего.
Нормальный поток документа
По умолчанию элементы следуют нормальному потоку документа: блочные элементы располагаются вертикально, а строчные — горизонтально внутри текста. Свойство position позволяет выйти за пределы этого потока для создания наложений, закреплённых заголовков и всплывающих подсказок.
position: static (по умолчанию)
Каждый элемент начинает работу с position: static. Это означает, что его положение определяется нормальным потоком документа. Свойства top, right, bottom и left не влияют на статические элементы.
position: relative
position: relative оставляет элемент в нормальном потоке, но позволяет смещать его относительно исходного положения с помощью top, right, bottom и left. Важно, что это создаёт контекст позиционирования для абсолютно позиционированных дочерних элементов.
.card {
position: relative;
top: 10px; /* shift 10px down from original position */
left: -5px; /* shift 5px left */
}position: absolute
position: absolute удаляет элемент из обычного потока. Элемент позиционируется относительно ближайшего предка с позиционированием (с любым значением position, кроме static). Если предка с позиционированием нет, элемент позиционируется относительно области просмотра.
.card {
position: relative; /* creates context */
}
.card .badge {
position: absolute;
top: 12px;
right: 12px; /* top-right corner of .card */
}Свойство z-index
Позиционированные элементы могут перекрываться. Используйте z-index, чтобы управлять порядком наложения. Чем выше значение z-index, тем выше располагается элемент. Свойство работает только для позиционированных элементов (но не для static). Оно создаёт новый контекст наложения.
.tooltip {
position: absolute;
z-index: 100; /* above other content */
}
.modal {
position: fixed;
z-index: 1000; /* above tooltip */
}position: fixed
position: fixed удаляет элемент из обычного потока и прикрепляет его к области просмотра. При прокрутке страницы он не перемещается. Это идеально подходит для закреплённых заголовков, плавающих кнопок действий и баннеров с уведомлением о файлах cookie.
.header {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 64px;
background: white;
z-index: 50;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}position: sticky
position: sticky объединяет два поведения: элемент прокручивается вместе со страницей, пока не достигнет порогового значения (заданного верхней или нижней границей), а затем закрепляется. Это удобно для заголовков разделов в длинных таблицах или боковых панелей, которые закрепляются после заголовка.
.sidebar {
position: sticky;
top: 80px; /* sticks 80px from top after scroll */
align-self: flex-start;
}Центрирование с помощью абсолютного позиционирования
Классический приём: объедините position: absolute; top: 50%; left: 50% с transform: translate(-50%, -50%), чтобы идеально расположить элемент по центру его позиционированного родителя.
.modal {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 480px;
background: white;
border-radius: 12px;
}Скрытие переполнения обрезает абсолютно позиционированные дочерние элементы
Абсолютно позиционированный дочерний элемент по умолчанию может выходить за границы родителя. Если добавить родителю overflow: hidden, всё за пределами его блока будет обрезано — это удобно для эффектов с изображениями на карточках и обрезки значков.
Проблема: непреднамеренные контексты наложения
Некоторые свойства непреднамеренно создают контексты наложения: transform, filter, isolation: isolate. Это может привести к конфликтам z-index: элемент со значением z-index: 9999 всё равно окажется позади другого элемента, если он находится внутри контекста наложения более низкого уровня.
Когда использовать разные способы позиционирования
Относительное позиционирование: смещения и создание контекста позиционирования. Абсолютное позиционирование: значки, всплывающие подсказки и наложения относительно родителя. Фиксированное позиционирование: постоянные заголовки, модальные окна и всплывающие уведомления. Липкое позиционирование: заголовки разделов и навигация боковой панели, следующая за прокруткой. Не используйте position для создания макетов — применяйте Flex или Grid.
Быстрая проверка
Элемент имеет position: absolute; top: 0; right: 0;. Где он окажется, если его родитель имеет position: relative?
Повторение: позиционирование в CSS
static используется по умолчанию. relative задаёт смещение без выхода из потока и создаёт контекст позиционирования. absolute выводит элемент из потока и позиционирует его относительно ближайшего предка с позиционированием. fixed прикрепляет элемент к области просмотра. sticky прокручивается, а затем закрепляется. Используйте z-index, чтобы управлять порядком перекрытия.
Часто задаваемые вопросы
Урок «Позиционирование: relative, absolute, fixed, sticky» бесплатный?
Да — полный текст урока «Позиционирование: relative, absolute, fixed, sticky» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Frontend Academy, подпишись на CoddyKit PRO. Курс Frontend Academy содержит 4 уроков всего.
Чему я научусь в уроке «Позиционирование: relative, absolute, fixed, sticky»?
Выводите элементы из обычного потока с помощью значений position, чтобы накладывать содержимое, фиксировать заголовки и создавать закреплённые боковые панели. Ты практикуешь Frontend Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Frontend Academy?
Предыдущий опыт не требуется. Frontend Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Позиционирование: relative, absolute, fixed, sticky»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Frontend Academy?
Да. Каждый урок Frontend Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Селекторы и каскад
- Цвета, типографика и блочная модель
- Display: основы block, inline, flex и grid
- Позиционирование: relative, absolute, fixed, sticky