0Pricing
Frontend Academy · Урок

Позиционирование: 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 — локальная установка не требуется.

Все уроки этого курса

  1. Селекторы и каскад
  2. Цвета, типографика и блочная модель
  3. Display: основы block, inline, flex и grid
  4. Позиционирование: relative, absolute, fixed, sticky
← Назад к Frontend Academy