Абсолютное позиционирование и содержащий блок
Позиционируйте элементы абсолютно относительно ближайшего предка с заданным позиционированием.
«Абсолютное позиционирование и содержащий блок» — бесплатный урок CSS Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CSS Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CSS Academy содержит 4 уроков всего.
position: absolute
Абсолютно позиционированный элемент удаляется из обычного потока документа. Другие элементы ведут себя так, будто его не существует. Его положение определяется относительно ближайшего позиционированного предка.
Содержащий блок
Содержащим блоком абсолютно позиционированного элемента является ближайший предок со значением position, отличным от static. Если такого предка нет, положение элемента определяется относительно исходного содержащего блока (области просмотра).
Настройка содержащего блока
Самый распространённый шаблон: добавьте position: relative родительскому элементу, чтобы он содержал абсолютно позиционированные дочерние элементы.
<div class="card">Card content<span class="badge">Badge</span></div>
Свойства смещения с absolute
При абсолютном позиционировании расстояния top/right/bottom/left отсчитываются от внутреннего края содержащего блока.
<div class="tooltip-wrap">Hover target<span class="tooltip">I'm below the parent</span></div>
Центрирование с absolute
Классический способ центрирования абсолютно позиционированных элементов:
<div class="center-wrap"><div class="centered">Perfectly centered</div></div>
Ширина и высота absolute-элементов
Абсолютно позиционированные элементы по умолчанию подстраиваются под размер содержимого (если не заданы width и height). В отличие от блочных элементов, они больше не растягиваются на всю ширину контейнера.
Растягивание по всем краям
Установка всех четырёх краёв в 0 растягивает абсолютно позиционированный элемент на весь содержащий блок:
<div class="stretch-wrap"><div class="overlay">Overlay covers all edges</div></div>
Сокращённая запись inset
Свойство inset является сокращённой записью для одновременной установки top, right, bottom и left:
<div class="cover-wrap"><div class="full-cover"></div></div>
Наложение с помощью z-index
Абсолютно позиционированные элементы участвуют в контекстах наложения. Используйте z-index, чтобы управлять тем, какие перекрывающиеся абсолютные элементы отображаются поверх других.
<div class="stack-wrap"><div class="box-a">Behind</div><div class="tooltip">On top (z-index:100)</div></div>
Распространённая ошибка: забытый родительский элемент
Если Вы забыли добавить position: relative родительскому элементу, абсолютный дочерний элемент будет позиционирован относительно ближайшего уже позиционированного предка — часто области просмотра. Всегда проверяйте содержащий блок.
Absolute внутри Flex/Grid
Flex- или Grid-контейнер автоматически не становится позиционированным элементом. Вам всё равно нужно явно добавить position: relative, чтобы сделать его содержащим блоком для абсолютных дочерних элементов.
Быстрая проверка
Где будет размещён абсолютно позиционированный элемент, если ни у одного из его предков нет значения position, отличного от static?
Итоги
Абсолютно позиционированные элементы покидают поток документа и позиционируются относительно ближайшего предка, не имеющего значения static. Всегда добавляйте position: relative родительскому элементу, чтобы управлять размещением. Используйте inset: 0, чтобы растянуть абсолютный элемент на весь контейнер.
Часто задаваемые вопросы
Урок «Абсолютное позиционирование и содержащий блок» бесплатный?
Да — полный текст урока «Абсолютное позиционирование и содержащий блок» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CSS Academy, подпишись на CoddyKit PRO. Курс CSS Academy содержит 4 уроков всего.
Чему я научусь в уроке «Абсолютное позиционирование и содержащий блок»?
Позиционируйте элементы абсолютно относительно ближайшего предка с заданным позиционированием. Ты практикуешь CSS Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CSS Academy?
Предыдущий опыт не требуется. CSS Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Абсолютное позиционирование и содержащий блок»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CSS Academy?
Да. Каждый урок CSS Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Статическое и относительное позиционирование
- Абсолютное позиционирование и содержащий блок
- Фиксированное и липкое позиционирование
- Z-index и контекст наложения