Свойство

box-sizing

Baseline: широко доступно

Определяет, что измеряют width и height — только содержимое или весь блок вместе с полями и рамкой.

Пример

Оба блока шириной 200px, но второй с border-box таким и остаётся, а первый вырастает на поля и рамку:

content-box и border-box
HTML
<div class="box">content-box</div>
<div class="box box--border">border-box</div>
CSS
.box {
  width: 200px;
  margin-bottom: 0.5rem;
  padding: 20px;
  border: 5px solid;
}

.box--border {
  box-sizing: border-box;
}

Результат

Синтаксис

Формальный синтаксис
box-sizing: content-box | border-box;
Начальное значение
content-box
Применяется к
всем элементам, у которых действуют width и height
Наследуется
нет
Анимируется
дискретно
Вычисляемое значение
как указано

Значения

content-box
width и height задают размер только содержимого. Поля и рамка добавляются сверху. Значение по умолчанию.
border-box
width и height задают размер вместе с полями и рамкой. Содержимое сжимается, чтобы всё поместилось.

Как понять

С content-box итоговая ширина считается так: width + padding слева и справа + border слева и справа. Для блока из примера: 200 + 40 + 10 = 250 пикселей.

С border-box итоговая ширина равна width, а место под содержимое — то, что осталось: 200 − 40 − 10 = 150 пикселей. Так проще думать о раскладке: если колонка занимает 50%, она занимает ровно 50%, какие бы поля у неё ни были.

Примеры

Для всех элементов

Самое частое использование — одно правило в начале стилей:

CSS
*,
*::before,
*::after {
  box-sizing: border-box;
}

Две колонки по 50%

С border-box две колонки по 50% с полями помещаются в строку. С content-box вторая уехала бы вниз:

Колонки с полями
HTML
<div class="row">
  <div class="col">Левая</div>
  <div class="col">Правая</div>
</div>
CSS
.col {
  box-sizing: border-box;
  display: inline-block;
  width: 50%;
  padding: 1rem;
  border: 2px solid;
}

.row {
  font-size: 0; /* убрать пробел между inline-block */
}

.col {
  font-size: 1rem;
}

Результат

Подсказки

  • box-sizing не наследуется. Правило * { box-sizing: border-box; } не затрагивает псевдоэлементы — поэтому в него добавляют ::before и ::after.
  • margin в размер не входит ни при каком значении.
  • Некоторые элементы форм (input, select, button) в разных браузерах по умолчанию используют разные модели — общее правило border-box их выравнивает.

Поддержка браузерами

Значения и возможности: box-sizing
Возможность Chrome Edge Firefox Safari Chrome Android Safari iOS Samsung Internet Opera
box-sizing 10 1 2 12 3 29 4 5.1 5 18 6 7 6 8 1.0 9 10 7
border-box 1 12 1 3 18 2 1.0 15
content-box 1 12 1 3 18 2 1.0 15

Примечания

  1. Chrome: С префиксом -webkit- — с версии 1.
  2. Chrome: box-sizing не учитывается, когда высоту возвращает window.getComputedStyle().
  3. Edge: С префиксом -webkit- — с версии 12.
  4. Firefox: С префиксом -webkit- — с версии 49.
  5. Safari: С префиксом -webkit- — с версии 3.
  6. Chrome Android: С префиксом -webkit- — с версии 18.
  7. Chrome Android: box-sizing не учитывается, когда высоту возвращает window.getComputedStyle().
  8. Safari iOS: С префиксом -webkit- — с версии 1.
  9. Samsung Internet: С префиксом -webkit- — с версии 1.0.
  10. Samsung Internet: box-sizing не учитывается, когда высоту возвращает window.getComputedStyle().

Яндекс Браузер работает на Chromium и поддерживает то же, что Chrome той же версии. Данные: MDN browser-compat-data 8.1.2, обновлено 17 сентября 2026 г.

Спецификация

См. также

Поиск

Название свойства, селектора или функции — можно по-английски и без двоеточий: hover, gap, clamp.

Меню