Box model — одна из базовых концепций в CSS, без которой невозможна современная вёрстка. Каждый элемент на веб-странице для браузера — это прямоугольная коробка, и понимание того, как эта коробка устроена, позволяет точно управлять размерами, отступами и позиционированием. Рассмотрим, откуда появилась box model, как она работает и как её применять на практике.
Box model была частью спецификации CSS1, принятой W3C в 1996 году. Тогда же были заданы её ключевые принципы: каждый HTML-элемент должен восприниматься как прямоугольная модель со слоями — content, padding, border и margin.
Но на практике в 90-х всё было сложнее. Основные браузеры того времени — Internet Explorer и Netscape Navigator — по-разному трактовали спецификацию. Netscape использовал «правильную» модель: width — это только контент, а padding и border прибавлялись сверху. А IE включал padding и border внутрь width, что полностью меняло расчёт размеров.
Это привело к хаосу: одна и та же вёрстка выглядела по-разному в двух браузерах. Разработчики были вынуждены использовать хаки, условные комментарии и писать код «под конкретный движок». Только в 2000-х удалось стабилизировать поведение браузеров, а позже был введён параметр box-sizing, позволивший явно задать нужную модель.
Модель коробки включает четыре слоя:
width и height.Важно: если используется стандартное поведение (box-sizing: content-box), то width — это только content, и итоговый размер блока увеличивается за счёт padding и border.
Пример расчёта:
width: 200px;
padding: 20px;
border: 5px;
Фактическая ширина блока будет: 200 + 2×20 + 2×5 = 250px.
box-sizing — точка контроляЧтобы упростить расчёты и избежать увеличения габаритов из-за padding и border, используется свойство box-sizing. Оно может принимать два значения:
content-box — поведение по умолчанию. width и height — это размеры контента.border-box — width включает в себя padding и border. Чаще всего используется именно этот вариант.Сегодня большинство проектов, UI-фреймворков и шаблонов подключают глобальное правило:
*,
*::before,
*::after {
box-sizing: border-box;
}
Это делает расчёт размеров предсказуемым и избавляет от необходимости вручную вычитать padding из ширины.
Box model — основа всех отступов, позиционирования и визуальных расстояний между элементами. Вот несколько примеров, где она критически важна:
Также box model напрямую влияет на метрики производительности, такие как Cumulative Layout Shift (CLS): неконтролируемые margin или изменение padding во время загрузки — частая причина сдвигов интерфейса.
Box model — не просто термин из CSS, а реальный инструмент управления внешним видом и поведением элементов на странице. Понимание её устройства и умелое применение — обязательный навык любого фронтенд-разработчика.
Используйте box-sizing: border-box как дефолт, контролируйте отступы и помните: браузер видит не «дизайн», а прямоугольники. И только от вас зависит, насколько аккуратно они будут размещены.
P.S.: Текст оформлен при помощи нейросети. Авторский опыт, выводы и позиция — личные.