Spec-Zone.ru › CSS

Свойство CSS `box-sizing`

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на множестве устройств и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Свойство box-sizing CSS задаёт способ расчёта общей ширины и высоты элемента.

Попробуйте

box-sizing: content-box;
width: 100%;
box-sizing: content-box;
width: 100%;
border: solid #5b6dcd 10px;
padding: 5px;
box-sizing: border-box;
width: 100%;
border: solid #5b6dcd 10px;
padding: 5px;
<section id="default-example">
  <div id="example-element-parent">
    <p>Parent container</p>
    <div class="transition-all" id="example-element">
      <p>Child container</p>
    </div>
  </div>
</section>
#example-element-parent {
  width: 220px;
  height: 200px;
  border: solid 10px #ffc129;
  margin: 0.8em;
}

#example-element {
  height: 60px;
  margin: 2em auto;
  background-color: rgb(81 81 81 / 0.6);
}

#example-element > p {
  margin: 0;
}

Синтаксис

box-sizing: border-box;
box-sizing: content-box;

/* Global values */
box-sizing: inherit;
box-sizing: initial;
box-sizing: revert;
box-sizing: revert-layer;
box-sizing: unset;

Значения

Это свойство задаётся одним из следующих ключевых значений:

content-box

Это начальное значение и значение по умолчанию согласно стандарту CSS. Свойства width и height включают содержимое, но не включают внутренние отступы, границу или внешние отступы. Например, .box {width: 350px; border: 10px solid black;} отображает блок шириной 370px.

В этом случае размеры элемента рассчитываются следующим образом: width = ширина содержимого и height = высота содержимого. (Границы и внутренние отступы не учитываются при расчёте.)

border-box

Свойства width и height включают содержимое, внутренние отступы и границу, но не включают внешние отступы. Обратите внимание, что внутренние отступы и граница располагаются внутри блока. Например, .box {width: 350px; border: 10px solid black;} отображает блок шириной 350px, при этом область содержимого имеет ширину 330px. Размер области содержимого не может быть отрицательным и ограничивается значением 0, поэтому с помощью border-box невозможно скрыть элемент.

В этом случае размеры элемента рассчитываются следующим образом: width = граница + внутренние отступы + ширина содержимого и height = граница + внутренние отступы + высота содержимого.

Описание

По умолчанию в блочной модели CSS значения width и height, заданные для элемента, применяются только к области содержимого элемента. Если у элемента есть граница или внутренние отступы, они прибавляются к значениям width и height, определяя размер блока, отображаемого на экране. Это означает, что при задании width и height нужно учитывать возможные границы и внутренние отступы. Например, если у вас есть четыре блока с width: 25%;, любой из них с левым или правым внутренним отступом либо левой или правой границей по умолчанию не поместится в одну строку в пределах родительского контейнера.

Свойство box-sizing позволяет изменить такое поведение:

  • content-box задаёт поведение блочной модели CSS по умолчанию. Если задать ширину элемента 100 пикселей, ширина области его содержимого составит 100 пикселей, а ширина границы и внутренних отступов добавится к итоговой ширине отображаемого элемента, из-за чего она превысит 100px.
  • border-box указывает браузеру учитывать границы и внутренние отступы в заданных для элемента значениях ширины и высоты. Если задать ширину элемента 100 пикселей, эти 100 пикселей будут включать границу и внутренние отступы, а область содержимого уменьшится, чтобы компенсировать дополнительную ширину. Как правило, это значительно упрощает изменение размеров элементов.

    box-sizing: border-box — это стиль по умолчанию, который браузеры применяют к элементам <table>, <select> и <button>, а также к элементам <input>, тип которых — radio, checkbox, reset, button, submit, color или search.

Примечание: Для компоновки элементов часто удобно задавать box-sizing значение border-box. Это значительно упрощает работу с размерами элементов и обычно позволяет избежать множества проблем, с которыми можно столкнуться при компоновке содержимого. С другой стороны, при использовании position: relative или position: absolute свойство box-sizing: content-box позволяет задавать значения позиционирования относительно содержимого независимо от изменений размеров границы и внутренних отступов, что иногда бывает желательно.

Формальное определение

Начальное значение content-box
Применяется к всем элементам, для которых допустимы width или height
Наследуется нет
Вычисленное значение как задано
Тип анимации дискретный

Формальный синтаксис

box-sizing = 
  content-box |
  border-box

Примеры

Размеры блоков со значениями content-box и border-box

В этом примере показано, как различные значения box-sizing изменяют отображаемый размер двух одинаковых во всём остальном элементов.

HTML

<div class="content-box">Content box</div>
<br />
<div class="border-box">Border box</div>

CSS

div {
  width: 160px;
  height: 80px;
  padding: 20px;
  border: 8px solid red;
  background: yellow;
}

.content-box {
  box-sizing: content-box;
  /* Total width: 160px + (2 * 20px) + (2 * 8px) = 216px
     Total height: 80px + (2 * 20px) + (2 * 8px) = 136px
     Content box width: 160px
     Content box height: 80px */
}

.border-box {
  box-sizing: border-box;
  /* Total width: 160px
     Total height: 80px
     Content box width: 160px - (2 * 20px) - (2 * 8px) = 104px
     Content box height: 80px - (2 * 20px) - (2 * 8px) = 24px */
}

Результат

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

Спецификация
Модуль CSS Box Sizing, уровень 3
# box-sizing

Совместимость с браузерами

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari на iOS Samsung Internet WebView для Android WebView на iOS
box-sizing
10box-sizing не учитывается при вычислении высоты на основе window.getComputedStyle().
1
12
12
29
49
1До Firefox 23 значение box-sizing не учитывается при вычислении высоты на основе window.getComputedStyle().
7
5.1
3
18box-sizing не учитывается при вычислении высоты на основе window.getComputedStyle().
18
29
49
4До Firefox для Android 23 значение box-sizing не учитывается при вычислении высоты на основе window.getComputedStyle().
14box-sizing не учитывается при вычислении высоты на основе window.getComputedStyle().
14
6
1
1.0box-sizing не учитывается при вычислении высоты на основе window.getComputedStyle().
1.0
4box-sizing не учитывается при вычислении высоты на основе window.getComputedStyle().
2
6
1
border-box
1
12
1
15
3
18
4
14
2
1.0
4.4
2
content-box
1
12
1
15
3
18
4
14
2
1.0
4.4
2

См. также

  • Блочная модель CSS

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/box-sizing

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API