intermediate
Containing block
Определяйте, относительно чего считаются проценты, positioned offsets, fixed-элементы, transforms и container queries.
Containing block — прямоугольник, относительно которого считаются percentages и offset для positioned элементов. Для absolute обычно это ближайший positioned предок; для static flow — block container.
Transform, filter, perspective и contain могут сделать предка containing block для fixed и absolute потомков — частый источник багов «fixed header не fixed».
.panel {
position: relative;
height: 400px;
}
.panel__badge {
position: absolute;
inset-block-end: 0;
inset-inline-end: 0;
width: 25%; /* 25% от padding edge .panel */
}
Процентная height работает только при определённой высоте containing block; иначе height: 100% ведёт себя как auto.
На интервью: какой предок задаёт offset для absolute потомков и почему fixed иногда скроллится с transformed родителем.
Типовые ошибки: transformed предок «захватывает» fixed; процентная height без определённой высоты предка.
Чеклист:
- Определите formatting context и positioned предков.
- Следите за transform и containment на предках.
- Проверяйте definite sizes для percentages.
- Logical inset при смене направления текста.