Свойство 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 |
1
|
12
12
|
29
49
1До Firefox 23 значениеbox-sizing не учитывается при вычислении высоты на основе window.getComputedStyle(). |
7 |
5.1
3
|
18
|
29
49
4До Firefox для Android 23 значениеbox-sizing не учитывается при вычислении высоты на основе window.getComputedStyle(). |
14
|
6
1
|
1.0
|
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 |
См. также
© 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