position — CSS — Дока
Кратко
Скопировано
Свойство position задаёт способ позиционирования элемента в документе. Совместно со свойствами left, right, top, bottom элементу задаётся его местоположение на странице.
Пример
Скопировано
.box { position: absolute; left: 0; top: 20px;}
.box {
position: absolute;
left: 0;
top: 20px;
}
Как понять
Скопировано
Иногда в процессе вёрстки требуется реализовать разные сложные идеи дизайнера про расположение элементов друг относительно друга. Например, расположить один элемент поверх другого или немного сместить отображение элемента относительно своего начального положения. Бывают и более сложные случаи, когда требуется зафиксировать элемент относительно окна браузера, а не относительно страницы.
Базовым свойством, которое изменяет способ позиционирования, является свойство position.
Как пишется
Скопировано
staticСкопировано
Значение по умолчанию. Статичное позиционирование. Любой элемент, добавленный на страницу, будет иметь это значение и будет расположен в нормальном потоке документа согласно контексту форматирования родительского элемента. Свойства left, right, top, bottom и z игнорируются.
❗️
Элемент со значением position не является позиционированным элементом. Это важный момент, потому что элементы с любым другим значением свойства position создают внутри себя контекст наложения и становятся опорными. Опорным элементом будем называть такой, относительно которого позиционируются дочерние элементы.
relativeСкопировано
Элемент позиционируется так же, как и статичный, но его отображение может быть смещено относительно своего начального положения при помощи свойств left, right, top, bottom. Это смещение чисто визуальное и не затрагивает положение соседних элементов, кроме случая, когда элемент выходит за границы родителя, имеющего возможность прокрутки.
На странице элемент будет занимать столько же места, как если бы он имел статичное позиционирование.
Открыть демо в новой вкладкеabsoluteСкопировано
Способ позиционирования, кажущийся наиболее понятным. Мы просто задаём абсолютное позиционирование и при помощи свойств left, right, top, bottom регулируем положение элемента. Есть ряд особенностей такого позиционирования:
- Элемент убирается из основного потока документа.
То есть перестаёт влиять на положение окружающих элементов и на размер родителя. Можно представить себе, что элемент уходит на слой выше и перестаёт взаимодействовать со всеми элементами, кроме своих потомков. - Элемент позиционируется относительно ближайшего позиционированного предка. То есть браузер идёт вверх по дереву элементов и ищет ближайшего опорного родителя. И затем располагает наш элемент относительно этого родителя.
- Если элемент был частью строчного контекста форматирования, он приобретает блочный контекст форматирования. К нему становится применима блочная модель.
- Если элемент был блочным и занимал всю ширину своего родителя, то теперь его ширина будет определяться шириной контента.
- Отступы элемента с
positionне схлопываются с отступами соседних элементов.: absolute
fixedСкопировано
Иногда требуется позиционировать элемент не относительно родителя, а относительно окна браузера вне зависимости от вложенности.
Для решения подобной задачи подходит position. Свойство так же, как и предыдущее, работает с указанием смещения left, right, top, bottom. У такого способа позиционирования есть ряд особенностей:
- Элемент убирается из основного потока документа. То есть перестаёт влиять на положение окружающих элементов и на размер родителя. Можно представить себе, что элемент уходит на слой выше и перестаёт взаимодействовать со всеми элементами, кроме своих потомков.
- Элемент позиционируется относительно окна браузера, за исключением случаев, если один из родителей имеет значения свойств
transform,perspectiveилиfilter, отличные отnone. В этом случае блок становится опорным, и позиционирование будет производиться уже относительно него, а не окна браузера.
stickyСкопировано
Элемент позиционируется в нормальном потоке так же, как и статичный, а затем смещается при помощи свойств left, right, top, bottom относительно ближайшего родителя, имеющего прокрутку.
Это свойство применяется, когда нам нужно зафиксировать какой-либо элемент не сразу, а при прокрутке родителя до какого-то известного положения.
Например, в следующем примере элемент будет вести себя как обычно до тех пор, пока родитель не будет прокручен таким образом, что расстояние от верха родителя до верхней границы элемента не станет меньше 10 пикселей. Как только прокрутка достигнет такого значения, элемент зафиксируется в положении 10 пикселей от верха границы родителя:
.block { position: sticky; top: 10px;}
.block {
position: sticky;
top: 10px;
}
У такого позиционирования есть ряд особенностей:
- Элемент ведёт себя как элемент с относительным (
relative) позиционированием до тех пор, пока его родитель не будет прокручен до определённой границы. Как правило, эта точка совпадает с положением верхней границы нашего элемента, но может быть изменена с использованием свойстваtop. - Элемент остаётся «приклеенным» во время прокрутки родителя до тех пор, пока не «встретит» противоположную границу своего родителя.

📃
Подробнее об этом значении можно почитать в статье про липкое позиционирование.
Подсказки
Скопировано
💡 Как правило, если элементу с position или position не заданы ширина и высота, то значение этих величин высчитывается по количеству контента. Однако можно неявно заставить блок тянуться на всю ширину или высоту родителя, задав одновременно противоположные свойства (left и right, или top и bottom). Это будет работать, только если width и height будут иметь значение auto.
💡 Если ширина задана явно (не auto), а также заданы left и right, то для direction ltr приоритет отдаётся свойству left. Для rtl — свойству right.
💡 Если высота задана явно (не auto), а также заданы top и bottom, то приоритет отдаётся свойству top.
💡 Если для абсолютно позиционированного элемента (absolute или fixed) задано смещение только по одной из осей (например, только top или только left), то смещение по второй из осей высчитывается, исходя из расположения элемента, если бы он был позиционирован статично. В примере ниже блоку не задано положение по вертикали, поэтому его верхний край помещается в ту же точку, где находился бы при статичном позиционировании:
Можно ли задать position absolute и relative одновременно для одного элемента в css?
- Автор темы Shok
- Дата начала
Shok
Shok
- #1
для parent нужно задать position:relative, для child position:absolute, а для под child-а child должен быть relative.
Сортировка по дате Сортировка по голосам
zloi
zloi
- #2
Для одного и того же элемента задать одновременно position absolute и relative не получиться задать, да и не нужно. Позиционирование может быть только одно у элемента. Если же нужно задать отличное свойство позиционирования для вложенных элементов, то это можно, но это все-таки разные элементы.
Позитивный голос 0
qwe123456
qwe123456
- #3
Дочерние селекторы и все parent parent > child parent > child > child
Позитивный голос 0
Войдите или зарегистрируйтесь для ответа.
Вопрос Можно ли быть инженером и программистом одновременно?
- Chaka
- Компьютерные вопросы
- Ответы
- 7
- Просмотры
- 144
Smile_Igor
Вопрос Про steam. Можно ли играть с одного аккаунта, ОДНОВРЕМЕННО на разных компьютерах в разные игры??
- Sevenaces
- Steam
- Ответы
- 4
- Просмотры
- 448
Ашот
Вопрос Поможет ли изучение html и css, в изучении C#
- salatikinik
- Вопросы по сайтостроению
- Ответы
- 5
- Просмотры
- 477
EWFEREE
Вопрос
При работе NFC на смартфоне, должен ли быть интернет? И др.
- Евгений fox
- Общие вопросы о сети
- Ответы
- 9
- Просмотры
- 537
ckfdf
Продаю Купить читы hunt showdown (сх) — аимбот / вх + есп
- Mikhail KH
- Платные читы/моды на заказ
- читы hunt showdown
- Ответы
- 0
- Просмотры
- 298
Mikhail KH
Поделиться:
Vkontakte Odnoklassniki Mail.
ru Liveinternet Livejournal Facebook Twitter Reddit Pinterest Tumblr
Позиция в CSS: относительная и абсолютная
Нравится (18)
Твитнуть
Делиться
740,92К Views
Свойство CSS position определяет, как следует из названия, как элемент позиционируется на веб-странице.
Если вам интересно почитать о свойствах шрифта, вам могут быть интересны статьи об относительном размере шрифта и столбцах CSS.
Итак, существует несколько типов позиционирования: статическое, относительное, абсолютное, фиксированное, липкое, начальное и наследуемое
- Статические — будут следовать обычному потоку документа, который сверху-слева-снизу-справа на них не повлияет.
- Relative — позиционируемый элемент позиционируется относительно своего нормального положения,
- Абсолютный – относится к первому родительскому элементу, положение которого отличается от статического
- Фиксированный — отображается относительно окна просмотра или самого окна браузера.
- Sticky — позиционируется в зависимости от положения прокрутки пользователя.
Теперь, когда мы объяснили основы, мы поговорим о двух наиболее часто используемых значениях позиции — 9.0018 относительное и абсолютное .
Что такое относительное позиционирование?
Когда вы устанавливаете позицию относительно элемента , без добавления каких-либо других атрибутов позиционирования (сверху, снизу, справа, слева) ничего не произойдет . Когда вы добавляете дополнительную позицию, например, слева: 20 пикселей, элемент смещается на 20 пикселей вправо от своего нормального положения. Здесь вы можете видеть, что этот элемент относится к самому себе . Когда элемент перемещается, никакие другие элементы макета не затрагиваются.
Есть вещь, которую вы должны иметь в виду при установке позиции — относительно элемента ограничивает область действия абсолютно позиционированных дочерних элементов. Это означает, что любой элемент, который является дочерним элементом этого элемента, может быть абсолютно позиционирован внутри этого блока.
После этого краткого объяснения нам нужно подтвердить его, показав пример.
В этом примере вы увидите, как перемещается относительно позиционированный элемент при изменении его атрибутов.
Первый элемент перемещается на оставил и наверху из своего нормального положения, а второй элемент остался на том же месте , потому что ни один из дополнительных атрибутов позиционирования не изменился.
HTML
Первый элемент
Второй элемент CSS
#first_element {
положение: родственник;
слева: 30 пикселей;
верх: 70 пикселей;
ширина: 500 пикселей;
цвет фона: #fafafa;
граница: сплошная 3px #ff7347;
размер шрифта: 24px;
выравнивание текста: по центру;
}
#второй_элемент {
положение: родственник;
ширина: 500 пикселей;
цвет фона: #fafafa;
граница: сплошная 3px #ff7347;
размер шрифта: 24px;
выравнивание текста: по центру;
}
Что такое абсолютное позиционирование?
Этот тип позиционирования позволяет вам разместить элемент именно там, где вы хотите .
Позиционирование выполняется относительно первого относительно (или абсолютно) позиционированного родительского элемента .
В случае, когда нет позиционированного родительского элемента, он будет позиционироваться связанным непосредственно с HTML-элементом (самой страницей) .
При использовании абсолютного позиционирования важно помнить, что оно должно быть равно 9.0018 не злоупотребляйте , иначе это может привести к кошмару обслуживания.
Следующее, еще раз, это показать пример.
В примере родительский элемент имеет позицию относительно . Теперь, когда вы установите позицию дочернего элемента на absolute , любое дополнительное позиционирование будет выполнено относительно родительского элемента . Дочерний элемент перемещается относительно верха родительского элемента на 100 пикселей и вправо от родительского элемента на 40 пикселей.
HTML
CSS
#parent {
положение: родственник;
ширина: 500 пикселей;
высота: 400 пикселей;
цвет фона: #fafafa;
граница: сплошная 3px #9e70ba;
размер шрифта: 24px;
выравнивание текста: по центру;
}
#ребенок {
положение: абсолютное;
справа: 40 пикселей;
верх: 100 пикселей;
ширина: 200 пикселей;
высота: 200 пикселей;
цвет фона: #fafafa;
граница: сплошная 3px #78e382;
размер шрифта: 24px;
выравнивание текста: по центру;
} В этих примерах вы увидели разницу между абсолютно и относительно позиционированными элементами.
Мы надеемся, что эта статья прояснила некоторые сомнения и поможет в будущих проектах.
Ознакомьтесь с другими подробными статьями о свойствах CSS, такими как эта: CSS Positions, SASS и LESS Nesting.
УС Элемент
Опубликовано на DZone с разрешения Татьяны Боскович, DZone MVB. Смотрите оригинальную статью здесь.
Мнения участников DZone являются их собственными.
Тенденции
Граф знаний с ChatGPT
Демистификация мультиоблачной интеграции
REST и обмен сообщениями для микросервисов
Ultrafast Persistence на Jakarta EE
Сохранение абсолютного элемента внутри его родителя — LabSrc
В CSS, когда вы стилизуете элемент с position: absolute, вы часто будете замечать, что указанный элемент будет телепортироваться за пределы своего родителя и плавать сам по себе, иногда даже полностью за кадром.
Этого может быть достаточно, чтобы отпугнуть вас от абсолютного позиционирования, но я здесь, чтобы уговорить вас вернуться.
Сводка
- 1. Что же такое происходит?
- 2.
Не ставьте ребенка в угол
- 2.1. Абсолютный ребенок
- 2.2. Абсолютный ребенок с родителем-родителем
Изучая абсолютное позиционирование CSS, вы можете увидеть много сообщений на форуме, говорящих о невозможности позиционирования элемента внутри родителя, если установлено position: absolute. Это широко распространенное заблуждение. Хотя такое поведение часто наблюдается, это относится только к элементам, чьи родители не имеют собственного набора позиций.
Дело в том, что элемент с абсолютным позиционированием будет позиционироваться относительно ближайшего предка, для которого установлено свойство position . Если ни у одного из предков не настроено свойство position, то оно будет позиционироваться относительно страницы в целом. Это то, что большинство людей в конечном итоге видят, что приводит к неправильному представлению.
Если вам нужна дополнительная информация о свойстве position в CSS, ознакомьтесь со статьей CSS Layout — The Position Property от W3schools.
На следующем изображении и в сопутствующем CSS показан дочерний элемент div, для которого задано положение: absolute. Вы заметите, что дочерний элемент div вышел за границы своего родителя.
Дочерняя позиция: абсолютная #parent {
граница: 3 пикселя, сплошной черный цвет;
отображение: встроенный блок;
набивка: 4ЭМ;
поле: 1em;
}
#ребенок {
граница: 3 пикселя сплошного синего цвета;
цвет синий;
сверху: 0;
слева: 0;
положение: абсолютное;
}
Теперь посмотрим, что произойдет, если мы добавим позицию: относительно родительского элемента div. Вы увидите, что дочерний элемент div волшебным образом вставлен своим родителем.
Дочерняя позиция: абсолютная, Родительская позиция: относительная #родитель {
граница: 3 пикселя, сплошной черный цвет;
отображение: встроенный блок;
набивка: 4ЭМ;
поле: 1em;
положение: родственник; /* Изменено только свойство CSS */
}
#ребенок {
граница: 3 пикселя сплошного синего цвета;
цвет синий;
сверху: 0;
слева: 0;
положение: абсолютное;
}
Это все, что нужно сделать, чтобы сохранить элемент с абсолютным позиционированием внутри своего родителя.

То есть перестаёт влиять на положение окружающих элементов и на размер родителя. Можно представить себе, что элемент уходит на слой выше и перестаёт взаимодействовать со всеми элементами, кроме своих потомков.