📍 Полное руководство по CSS Positioning

⏱️ 15 мин чтения 📊 Средний 👁️ 10 просмотров 📑 8 разделов

CSS Positioning — это мощный инструмент для точного контроля расположения элементов на странице. В этом руководстве вы изучите все виды позиционирования с интерактивными примерами.

Positioning идеально подходит для:

  • Создания фиксированных элементов (header, sidebar)
  • Наложения элементов друг на друга
  • Создания модальных окон и dropdown меню
  • Управления z-index и stacking context

Что такое CSS Positioning?

CSS Positioning — это модуль CSS, который позволяет точно контролировать расположение элементов относительно их нормального положения или других элементов.

Виды позиционирования

  • static — нормальный поток (по умолчанию)
  • relative относительно нормального положения
  • absolute относительно ближайшего позиционированного родителя
  • fixed относительно viewport
  • sticky гибрид relative и fixed

position: static

position: static — это значение по умолчанию. Элемент находится в нормальном потоке документа.

При static свойства top, right, bottom, left и z-index не работают.

position: relative

position: relative позиционирует элемент относительно его нормального положения.

Свойства top, right, bottom, left смещают элемент от его исходной позиции.

Важно: элемент сохраняет своё место в потоке!

👁️ position: relative пример
Я смещён на 20px вниз и 30px вправо
position: relative пример CSS
.box {
  position: relative;
  top: 20px;
  left: 30px;
  background: #667eea;
  color: white;
  padding: 20px;
}

position: absolute

position: absolute удаляет элемент из нормального потока и позиционирует его относительно ближайшего позиционированного родителя (не static).

Если такого родителя нет, элемент позиционируется относительно <html>.

Важно: элемент НЕ сохраняет своё место в потоке!

👁️ position: absolute пример
Абсолютное позиционирование
position: absolute пример CSS
.container {
  position: relative;
  height: 200px;
  background: #f0f0f0;
}

.box {
  position: absolute;
  top: 20px;
  right: 20px;
  background: #667eea;
  color: white;
  padding: 15px;
}

position: fixed

position: fixed позиционирует элемент относительно viewport (окна браузера).

Элемент остаётся на месте при скролле страницы.

Идеально для:

  • Фиксированных header
  • Кнопок "Наверх"
  • Модальных окон
👁️ position: fixed пример
↑ Кнопка "Наверх"
position: fixed пример CSS
.fixed-button {
  position: fixed;
  bottom: 20px;
  right: 20px;
  background: #667eea;
  color: white;
  padding: 15px 25px;
  border-radius: 50px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}

position: sticky

position: sticky — это гибрид relative и fixed.

Элемент ведёт себя как relative, пока не достигнет определённой позиции при скролле, затем становится fixed.

Обязательно нужно указать top (или другое свойство).

👁️ position: sticky пример
📌 Sticky Header (прокрути меня)

Контент 1

Контент 2

Контент 3

Контент 4

Контент 5

position: sticky пример CSS
.sticky-header {
  position: sticky;
  top: 0;
  background: #667eea;
  color: white;
  padding: 15px;
  z-index: 10;
}

z-index и stacking context

z-index управляет порядком наложения позиционированных элементов (не static).

Stacking Context

Stacking context — это трёхмерная концепция наложения элементов по оси Z.

Новый stacking context создаётся:

  • Элементом с position не static и z-index не auto
  • Элементом с opacity меньше 1
  • Элементом с transform не none
👁️ z-index пример
z-index: 1
z-index: 2
z-index: 3
z-index пример CSS
.box1 {
  position: absolute;
  z-index: 1;
  background: #667eea;
}

.box2 {
  position: absolute;
  z-index: 2;
  background: #f093fb;
}

.box3 {
  position: absolute;
  z-index: 3;
  background: #4facfe;
}

Практические примеры

Рассмотрим несколько практических примеров использования positioning.