DevSkillRoad

Позиционирование в CSS

📍 position, top, left, z-index

Свойство position определяет, как элемент располагается на странице. Вместе со свойствами top, right, bottom, left и z-index можно управлять положением и наложением элементов.

1. static — значение по умолчанию

Элемент располагается в обычном потоке страницы. Свойства top, left и z-index не работают.

.static {
    position: static;
    /* top, left не сработают */
}
Элемент 1 (static)
Элемент 2 (static) — идёт по порядку

2. relative — относительно себя

Элемент остаётся в потоке, но его можно сдвинуть относительно исходного положения. Сдвиг не влияет на соседние элементы.

Свойства смещения: top, right, bottom, left.

.relative {
    position: relative;
    top: 10px;
    left: 20px;
}
Обычный блок
position: relative; top: 10px; left: 20px;
Соседний блок (не заметил сдвиг)
📌 Важно: При relative элемент остаётся в потоке. Соседние элементы ведут себя так, будто он не сдвигался.

3. absolute — абсолютное позиционирование

Элемент вырывается из потока (соседние элементы его игнорируют). Позиционируется относительно ближайшего позиционированного родителя (не static). Если такого нет — относительно окна браузера.

.parent {
    position: relative;
    height: 150px;
    background: #f0f0f0;
}
.absolute {
    position: absolute;
    bottom: 10px;
    right: 10px;
}
absolute — прижат к правому нижнему углу

Текст после родителя (absolute не влияет на его положение)

📌 Ключевое: absolute позиционируется относительно первого родителя с position не static. Если такого нет — относительно окна браузера.

4. fixed — относительно окна браузера

Элемент фиксируется относительно окна браузера и не двигается при прокрутке. Вырывается из потока.

.fixed {
    position: fixed;
    bottom: 20px;
    right: 20px;
}
⚠️ В этом примере fixed не показан, чтобы не мешать просмотру лекции. Представьте кнопку, которая всегда видна в правом нижнем углу экрана при прокрутке страницы.

5. sticky — прилипающий элемент

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

.sticky {
    position: sticky;
    top: 0;
}
sticky — прилипает к верху при прокрутке

Прокрутите внутри этого блока ↓

... контент ...

... контент ...

6. z-index — наложение слоёв

Определяет, какой элемент будет выше при наложении. Работает только для позиционированных элементов (не static). Чем больше число, тем элемент выше.

.low {
    position: relative;
    z-index: 1;
}
.high {
    position: relative;
    z-index: 10;
}
z-index: 1
z-index: 2 (выше)

7. Сравнение всех значений position

ЗначениеВ потокеОтносительно чего
static✅ да
relative✅ дасебя
absolute❌ нетближайшего позиционированного родителя
fixed❌ нетокна браузера
sticky✅ дасебя (до границы)
📓 Из тетради: «Позиционирование — мощный инструмент, но используйте его аккуратно. absolute и fixed вырывают элемент из потока, что может ломать вёрстку, если не понимать, как это работает. Sticky удобен для шапок и меню. И помните про z-index — чем больше число, тем выше элемент».