[Easy] Box Model
1. Что такое CSS Box Model?
CSS Box Model описывает, как рассчитываются размеры и отступы элемента.
Каждый элемент состоит из:
content: непосредственно текст или медиаpadding: пространство между содержимым и рамкойborder: обводка вокруг содержимого + paddingmargin: внешнее пространство между элементами
.card {
width: 240px;
padding: 16px;
border: 1px solid #ddd;
margin: 12px;
}
2. Что контролирует box-sizing?
box-sizing определяет, включаются ли padding и border в объявленные width/height.
content-box (по умолчанию)
Объявленна я ширина = только content.
Отрендеренная ширина = width + левый/правый padding + левый/правый border.
.box {
box-sizing: content-box;
width: 100px;
padding: 10px;
border: 1px solid #000;
}
Итоговая ширина составляет 100 + 20 + 2 = 122px.
border-box
Объявленная ширина включает content + padding + border.
.box {
box-sizing: border-box;
width: 100px;
padding: 10px;
border: 1px solid #000;
}
Итоговая ширина остаётся 100px.
3. Почему border-box часто используется?
Это делает расчёты макета предсказуемыми и упрощает адаптивный дизайн.
Распространённый сброс:
* {
box-sizing: border-box;
}
Многие команды также применяют его к псевдоэлементам:
*,
*::before,
*::after {
box-sizing: border-box;
}
4. Схлопывание margin (важный момент на собеседовании)
Вертикальные margin между блочными элементами могут схлопываться.
.a {
margin-bottom: 24px;
}
.b {
margin-top: 16px;
}
Зазор составит 24px, а не 40px.
Способы избежать схлопывания margin:
- Добавить
paddingилиborderродительскому элементу - Использовать
display: flow-rootу родителя - Использовать
flexилиgridмакет
5. Советы по отладке Box Model
- Используйте панель Box Model в DevTools браузера
- Временно добавьте
outline: 1px solid redдля проверки границ - Предпочитайте системы отступов (например, шкала 4/8) для единообразия
6. Быстрые ответы для собеседования
Q1: В чём разница между margin и padding?
padding находится внутри рамки; margin — снаружи.
Q2: Зачем устанавливать box-sizing: border-box глобально?
Это предотвращает неожиданности с width/height и упрощает расчёты макета.
Q3: Всегда ли соблюдается width?
Он может быть ограничен min-width, max-width, макетом родителя и поведением содержимого.