CSS-свойствоВ стандарте

CSS box-sizing — синтаксис и примеры

CSS-свойство box-sizing: назначение, рабочее значение, влияние на раскладку или отрисовку, ошибки и поддержка браузерами.

Суть темы

Назначение «box-sizing» раскрывается через задачу «задавать внешние или внутренние размеры и управлять местом для содержимого». Свойство box-sizing относится к области «размеры и блочная модель» и участвует в расчёте блочной модели с учётом режима письма, ограничений min/max и box-sizing. Для воспроизводимой проверки «box-sizing» используйте пример в форме с сообщением об ошибке и наблюдайте поведение без пользовательской таблицы стилей.

Практическое правило для box-sizing

Перед применением «box-sizing» сформулируйте ожидаемое поведение, затем проверьте вычисленное значение box-sizing, наследование и контекст родителя. Для «box-sizing» такое сравнение показывает реальную причину изменения.

Синтаксис box-sizing

Для демонстрации «box-sizing» используется короткий код с наблюдаемым результатом. Сохраните структуру примера, когда будете проверять другое значение.

css
.demo {
  box-sizing: min(100%, 60rem);
}
Открыть в Playground

Как работает box-sizing

Чтобы объяснить работу «box-sizing», проследите путь от структуры и входного значения до отображения или поведения. Свойство box-sizing относится к области «размеры и блочная модель» и участвует в расчёте блочной модели с учётом режима письма, ограничений min/max и box-sizing. Контрольная точка для «box-sizing» — порядок фокуса в дереве доступности.

Проверка в проекте

  • Проверьте вычисленное значение box-sizing, наследование и контекст родителя; результат относится непосредственно к «box-sizing».
  • Проверить вычисленное значение в DevTools и источник победившего правила при разборе «box-sizing».
  • Проверьте «box-sizing» в форме с сообщением об ошибке через поведение без пользовательской таблицы стилей и запишите наблюдаемое изменение.
Выбор конструкции

Оставляйте «box-sizing» в решении только после проверки в форме с сообщением об ошибке. Если нативная конструкция решает задачу «box-sizing» с меньшим числом условий, используйте её.

Практика с box-sizing

Перенесите «box-sizing» в изолированном демо и испытайте его в форме с сообщением об ошибке. Сначала воспроизведите правильный результат, затем намеренно добавьте риск для «box-sizing»: изолированная декларация box-sizing без связанных ограничений может дать другой результат в реальном компоненте.

размеры и блочная модельbox-sizing

Сценарий: в форме с сообщением об ошибке.

Ошибки при работе с box-sizing

01

Каскад

Изолированная декларация box-sizing без связанных ограничений может дать другой результат в реальном компоненте — это предметный риск для «box-sizing».

02

Поддержка

Оптимизация кода до проверки корректности и доступности при использовании «box-sizing».

03

Контекст

Загрузка тяжёлого ресурса до того, как он нужен пользователю; для «box-sizing» проверьте это отдельно.

Поддержка box-sizing

Для «box-sizing» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «box-sizing»; окончательное решение принимайте по аудитории конкретного проекта.

Chromeс версии 10Edgeс версии 12Firefoxс версии 29Safariс версии 5.1

Спецификация: источник 1.

Вопросы о box-sizing

Как понять, что «box-sizing» выбрано правильно?

«box-sizing» выбрано правильно, когда оно решает задачу «задавать внешние или внутренние размеры и управлять местом для содержимого», сохраняет результат в форме с сообщением об ошибке и проходит предметную проверку: проверьте вычисленное значение box-sizing, наследование и контекст родителя.

Нужен ли запасной вариант для «box-sizing»?

Запасной вариант для «box-sizing» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «box-sizing» должно сохранять смысл, содержимое и основное действие.

Спецификации и источники

Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.