Skip to content

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

Что такое position?

  • position - определяет, как элемент позиционируется на странице (будет ли он на своём месте в потоке, сдвинут, зафиксирован или абсолютно размещён).

Свойства position

static

  • static - элемент в обычном потоке, не смешается (по умолчанию);

Например, изменим файл index.html:

index.html
html
<!doctype html>
<html lang="ru">
    <head>
        <meta charset="UTF-8" />
        <title>Static</title>
    </head>
    <body>
        <div class="box">Я static. Нахожусь в обычном потоке.</div>
    </body>
</html>

Изменим файл styles.css:

styles.css
css
.box {
    position: static;
    background: lightblue;
    padding: 20px;
    border: 2px solid #000;
}

relative

  • relative - относительное позиционирование - элемент в потоке, но сдвигается;

Например, изменим файл index.html:

index.html
html
<div class="box">
    Я relative. Сдвинут от исходного положения, но занимаю то же место.
</div>

Изменим файл styles.css:

styles.css
css
.box {
    position: relative;
    top: 30px;
    left: 40px;
    background: lightgreen;
    padding: 20px;
    border: 2px solid #000;
}

absolute

  • absolute - абсолютное позиционирование - элемент не в потоке, позиционируется относительно ближайшего родителя с position: relative / absolute / fixed;

Например, изменим файл index.html:

index.html
html
<div class="parent">
    Родитель с `position: relative`
    <div class="child">Я absolute. Смещён от родителя.</div>
</div>

Изменим файл styles.css:

styles.css
css
.parent {
    position: relative;
    height: 200px;
    top: 30px;
    border: 2px dashed #999;
}

.child {
    position: absolute;
    top: 60px;
    right: 20px;
    width: 150px;
    background: salmon;
    padding: 10px;
}

fixed

  • fixed - фиксированное позиционирование - относительно окна браузера;

Например, изменим файл index.html:

index.html
html
<div class="fixed">Я fixed. Я всегда прикреплён к верху окна.</div>

<div class="content">
    <p>Прокрути страницу — элемент останется на месте.</p>
    <p style="height: 1000px"></p>
</div>

Изменим файл styles.css:

styles.css
css
.fixed {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background: lightblue;
    color: black;
    padding: 10px;
    z-index: 999;
}

.content {
    margin-top: 60px;
}

sticky

  • sticky - "липкое" позиционирование - ведёт себя как relative, но при прокручивании "прилипает" к краю;

Например, изменим файл index.html:

index.html
html
<div class="sticky">Я sticky. Прилипну к верху при прокрутке.</div>

<div class="content">Много контента... Прокручивай вниз!</div>

Изменим файл styles.css:

styles.css
css
.sticky {
    position: sticky;
    top: 0;
    background: lightgreen;
    padding: 20px;
    border: 2px solid #333;
}

.content {
    height: 1500px;
    padding: 20px;
}

Свойство z-index

  • z-index - это целое число, определяющее, кто находится выше в визуальном слое (чем больше значение, тем выше слой).

Работает только на позиционированных элементах со свойствами relative, absolute, fixed и sticky.

Например, изменим файл index.html:

index.html
html
<div class="box1">z-index: 1</div>
<div class="box2">z-index: 2</div>

Изменим файл styles.css:

styles.css
css
.box1 {
    position: absolute;
    left: 40px;
    top: 40px;
    width: 150px;
    height: 150px;
    background: lightblue;
    z-index: 1;
}

.box2 {
    position: absolute;
    left: 80px;
    top: 80px;
    width: 150px;
    height: 150px;
    background: coral;
    z-index: 2;
}