Свойство box-sizing

Свойство box-sizing позволяет менять способ расчета размеров элемента.

По умолчанию добавление padding расширяет элемент: если мы задали ширину width 100px и padding-left в 20px, то реальная ширина элемента будет 120px.

А если мы зададим еще и border-left в 10px, то реальная ширина элемента станет 130px. То есть padding и border расширяют блок (и по ширине, и по высоте). Это поведение можно поменять с помощью box-sizing.

Синтаксис

селектор { box-sizing: content-box | border-box; }

Значения

Значение Описание
content-box И padding, и border расширяют блок.
border-box Ни padding, ни border не расширяют блок.

Значение по умолчанию: content-box.

Пример . Стандартное поведение

Сейчас оба блока имеют одинаковую высоту и ширину, однако у второго блока padding задан, а у первого - нет. Посмотрите, как отличаются их размеры:

<div id="elem1">elem1</div> <div id="elem2">elem2</div> #elem1 { width: 300px; height: 100px; margin-bottom: 10px; background: #f1f1f1; } #elem2 { padding: 50px; width: 300px; height: 100px; background: #f1f1f1; }

:

Пример . Стандартное поведение

Сейчас оба блока имеют одинаковую высоту и ширину, однако у второго блока задана граница в 10px, а у первого - нет. Посмотрите, как отличаются их размеры:

<div id="elem1">elem1</div> <div id="elem2">elem2</div> #elem1 { width: 300px; height: 100px; background: #f1f1f1; } #elem2 { border: 10px solid black; width: 300px; height: 100px; background: #f1f1f1; }

:

Пример . Стандартное поведение

Сейчас второй блок имеет и padding, и границу в 10px:

<div id="elem1">elem1</div> <div id="elem2">elem2</div> #elem1 { width: 300px; height: 100px; background: #f1f1f1; } #elem2 { padding: 50px; border: 20px solid black; width: 300px; height: 100px; background: #f1f1f1; }

:

Пример . Значение border-box

Добавим второму элементу значение border-box для свойства box-sizing. Теперь размеры и первого и второго элемента станут одинаковыми:

<div id="elem1">elem1</div> <div id="elem2">elem2</div> #elem1 { width: 300px; height: 100px; background: #f1f1f1; } #elem2 { box-sizing: border-box; padding: 50px; border: 10px solid black; width: 300px; height: 100px; background: #f1f1f1; }

:

Смотрите также

  • свойство outline,
    которое делает границу, не расширяющую элемент