Что такое блочная модель (Box Model)?
Блочная модель (Box Model) — это фундаментальная концепция CSS, описывающая, как каждый HTML-элемент представляется в виде прямоугольного блока, состоящего из четырёх областей: content, padding, border и margin.
Аналогия из жизни: элемент — это посылка. Содержимое (content) — сам товар, упаковочный материал вокруг него (padding) — пенопласт, коробка (border) — картонная стенка, а расстояние между коробками на полке (margin) — зазор.
Структура
Пример
┌─────────────────────────────────────┐
│ margin │
│ ┌───────────────────────────────┐ │
│ │ border │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ padding │ │ │
│ │ │ ┌───────────────────┐ │ │ │
│ │ │ │ content │ │ │ │
│ │ │ │ width x height │ │ │ │
│ │ │ └───────────────────┘ │ │ │
│ │ └─────────────────────────┘ │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
box-sizing
| Значение | Что включает width/height | По умолчанию |
|---|---|---|
content-box |
Только content | Да |
border-box |
content + padding + border | Нет (нужно указать явно) |
С content-box (по умолчанию): если width: 200px, padding: 20px, border: 1px, реальная ширина элемента = 200 + 202 + 12 = 242px.
С border-box: width: 200px — это итоговая ширина, включая padding и border. Содержимое займёт 200 - 202 - 12 = 158px.
Общепринятый сброс
Пример
*, *::before, *::after {
box-sizing: border-box;
}
Почти все современные проекты используют border-box глобально — так проще рассчитывать размеры.
На собеседовании: обязательно объяснить разницу между
content-boxиborder-box. Частая ошибка — не упомянутьbox-sizingили не знать, какое значение стоит по умолчанию.