← Все вопросы
В чём разница между position: relative и position: absolute?
17
Самая запутанная для меня тема. relative, absolute — что от чего позиционируется? И почему absolute то прыгает в угол страницы, то ведёт себя нормально?
3 ответа
39
✓ Принятый ответ — помог автору
Разница в том, ОТНОСИТЕЛЬНО ЧЕГО двигается элемент при заданных top/left/right/bottom:
- relative — элемент остаётся на своём месте в потоке (соседи его «помнят»), а смещается ОТНОСИТЕЛЬНО САМОГО СЕБЯ. Место под ним сохраняется.
- absolute — элемент ВЫПАДАЕТ из потока (соседи ведут себя так, будто его нет) и позиционируется относительно ближайшего предка с
positionнеstatic(relative/absolute/fixed). Если такого предка нет — относительно всей страницы (вот почему «прыгает в угол»).
Классический приём — родителю relative, ребёнку absolute:
.card { position: relative; } /* точка отсчёта */
.badge {
position: absolute;
top: 8px;
right: 8px; /* прижать в правый верхний угол КАРТОЧКИ */
}
То есть relative часто ставят не чтобы двигать сам элемент, а чтобы он стал «якорем» для absolute-детей.
Никита Масленко вот про «якорь» для absolute — это и был ответ на все мои мучения 🙏 · 15 месяцев назад
Дарк Драгон автор: лучшее объяснение что видел, принято · 15 месяцев назад
16
absolute прыгает в угол, потому что нет родителя с position: relative — он берёт за точку отсчёта всю страницу. Поставь родителю relative.
8
relative — от своего обычного места, absolute — от позиционированного родителя и выпадает из потока.
Ваш ответ
Войдите, чтобы ответить на вопрос.