foundation
Box model
Учитывайте content, padding, border, margin, box-sizing, схлопывание margin, overflow и intrinsic size.
Каждый элемент — box: content, padding, border, margin. `box-sizing` определяет, входят ли padding и border в width и height.
*, *::before, *::after { box-sizing: border-box; }
.box {
width: 200px;
padding: 16px;
border: 2px solid;
/* border-box: общая ширина остаётся 200px */
}
Margin collapse: соседние вертикальные margin блочных box могут схлопнуться в один. Overflow (`hidden`, `auto`, `scroll`) создаёт scroll containers и может обрезать focus ring или задать formatting context.
Intrinsic sizing: min-content, max-content и fit-content объясняют, почему flex items не сжимаются без `min-width: 0`.
На интервью: content-box vs border-box, правила margin collapse и побочные эффекты overflow.
Компромисс: точность content-box против предсказуемости border-box при расчёте размеров компонентов.
Типовые ошибки: фиксированная ширина плюс padding даёт overflow при content-box; `overflow: hidden` скрывает focus и неожиданно ловит positioned потомков.
Чеклист:
- По умолчанию border-box для компонентов.
- Учитывайте padding и border в размерах.
- Знайте, когда margins схлопываются.
- Overflow — поведение layout, не хак для обрезки.