box-sizing
Свойство в CSS управляет тем, как модель коробки обрабатывается для элемента она применяется.
.module ( box-sizing: border-box; )
Один из наиболее распространенных способов его использования - применить его ко всем элементам на странице, включая псевдоэлементы:
*, *::before, *::after ( box-sizing: border-box; )
Это часто называют «универсальным размером коробки», и это хороший способ работать! (Буквальный), который width
вы устанавливаете, - это ширина, которую вы получаете, без необходимости выполнять в уме математические вычисления и управлять сложностью, которая возникает из-за ширины, которая поступает из нескольких свойств. У нас даже есть день осведомленности о размерах коробки.
Значения
content-box
: по умолчанию. Значения ширины и высоты применяются только к содержимому элемента. Заполнение и граница добавляются за пределами поля.padding-box
: Значения ширины и высоты применяются к содержимому элемента и его отступу. Граница добавляется за пределами поля. В настоящее время этоpadding-box
значение поддерживает только Firefox .border-box
: Значения ширины и высоты применяются к содержимому, отступу и границе.inherit
: наследует размер блока родительского элемента.
Пример
В этом примере изображения сравниваются значения по умолчанию content-box
(вверху) и border-box
(внизу):
Красная линия между изображениями представляет значение ширины элементов. Обратите внимание, что элемент со значением по умолчанию box-sizing: content-box;
превышает заявленную ширину, когда отступ и граница добавляются за пределы поля содержимого, в то время как элемент с box-sizing: border-box;
примененным значением полностью помещается в заявленную ширину.
Использование размера коробки
Допустим, вы установили элемент на width: 100px; padding: 20px; border: 5px solid black;
. По умолчанию ширина результирующего поля составляет 150 пикселей. Это связано с тем, что по умолчанию используется модель определения размеров блока content-box
, которая применяет заявленную ширину элемента только к его содержимому, размещая отступы и границу за пределами блока элемента. Это эффективно увеличивает пространство, занимаемое элементом.
Если вы измените значение box-sizing
на padding-box
, заполнение вставляется внутрь поля элемента. Тогда поле будет иметь ширину 110 пикселей, с отступом 20 пикселей внутри и 10 пикселями границы снаружи. Если вы хотите поместить отступ и границу внутри поля, вы можете использовать border-box
. Поле будет тогда шириной 100 пикселей - 10 пикселей границы и 20 пикселей отступа помещаются внутри поля элемента.
Демо
См. Сравнение значений размеров ящиков с помощью пера с помощью CSS-Tricks (@ css-tricks) на CodePen.
Связанный
width
height
padding
border
Поддержка браузера
Хром | Сафари | Fire Fox | Опера | IE | Android | iOS |
---|---|---|---|---|---|---|
Любой *† | 3 * † | 1 ‡ | 7 * | 8 * | 2.1 * † | Любой * |
* padding-box
не поддерживается
† более старые версии требуют -webkit
префикса (Chrome 1-9, Safari 3-5, Android 2.1-3.x)
‡ -moz
требуется префикс до версии 28, без префикса с 29.