Альтернативная модель

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

Пример HTML

Пример - CSS

В результате параметры заголовка будут включать в себя внутренние отступы и границы, но не внешние отступы. Их включение в CSS не предусмотрено, но даже при таких обстоятельствах вычислять размеры блока значительно проще:
– ширина: 650 + 20 + 20 = 690 px;
– высота: 300 + 20 + 20 = 340 px.

Блочная модель CSS: Стандартная и альтернативная модели

Если же свойство margin строго не определено, то конечные размеры элемента можно считать такими, какими они были определены изначально на основании ширины и высоты.

При работе со строчными элементами часть свойств не будет работать. В частности, ширина и высота не возымеют никакого эффекта. Отступы и границы отображаются, но с некоторыми недочетами: они будут перекрывать содержимое других объектов.

Самое простое решение проблемы – inline-block. Мы показываем содержимое элемента как блок, но он не будет занимать всю ширину родителя. Получается микс строки и блока. В этом случае никаких проблем с отображением объекта в соответствии с нашей задумкой не будет.

Пример - HTML

Пример – CSS

Элемент <q> имеет высоту и ширину, отступы внутренние и внешние, а также границу в 4 пикселя. Хоть он и не занимает всю ширину родителя (тега <body>), но вполне соответствует заданным параметрам.

Элемент <q> со свойством display: inline-block;

Если не использовать декларацию display: inline-block;, то поведение текста с цитатой будет не столь очевидным, а параметры ширины и высоты полностью проигнорируются.

Элемент <q> БЕЗ свойства display: inline-block;

Для более детального ознакомления с CSS рекомендуется изучать официальную документацию (с сайта World Wide Web консорциума). Детальное описание свойств и их возможных значений, а также примеры применения доступны на сайте Mozilla (в том числе и на русском языке). Ссылки приведены ниже.

Дополнительные ресурсы по теме CSS

1. Спецификации и их описание: https://www.w3.org/Style/CSS/specs.en.html

2. Руководство от Mozilla: "https://developer.mozilla.org/ru/docs/Web/CSS/Reference"


Свойство box-sizing в CSS управляет тем, как размеры элемента (ширина и высота) рассчитываются с учетом отступов, границ и содержимого. Это свойство может принимать два основных значения: content-box и border-box. Давайте рассмотрим каждое из этих значений и их влияние на работу с элементами в коробочной модели.

1. box-sizing: content-box

По умолчанию (если не указано иное), элементы имеют значение content-box. Это означает, что свойства width и height задают только размеры содержимого элемента, и любые отступы (padding) и границы (border) добавляются к этим размерам.

Как это работает:

  • Ширина элемента включает только содержимое.
  • Высота элемента включает только содержимое.
  • При добавлении отступов и границ, они добавляются к указанной ширине и высоте, увеличивая общий размер элемента.
Пример:

Расчет общего размера:

  • Общая ширина:
  • Общая высота:

Таким образом, фактические размеры элемента будут 350px в ширину и 250px в высоту.

2. box-sizing: border-box

Когда вы используете border-box, свойства width и height учитывают как содержимое, так и отступы и границы. Это значит, что любые отступы и границы включаются в заданные размеры элемента.

Как это работает:

  • Ширина и высота элемента включают содержимое, отступы и границы.
  • Если вы укажете ширину 300px, это будет полная ширина, включая границы и отступы.
Пример:

Расчет общего размера:

  • Общая ширина: 300px300px (включает содержимое, отступы и границы)
  • Общая высота: 200px200px (включает содержимое, отступы и границы)

Таким образом, фактические размеры элемента остаются 300px в ширину и 200px в высоту, даже с учетом отступов и границ.

Сравнение content-box и border-box

Свойство content-box border-box
Ширина Задает ширину содержимого Задает полную ширину элемента
Высота Задает высоту содержимого Задает полную высоту элемента
Влияние padding Увеличивает общие размеры Не влияет на общие размеры
Влияние border Увеличивает общие размеры Не влияет на общие размеры

Рекомендации по использованию

  • Используйте border-box: Большинство разработчиков предпочитают использовать box-sizing: border-box, поскольку это позволяет проще контролировать размеры элементов и избежать неожиданных изменений в макете, когда вы добавляете отступы или границы.
  • Установка по умолчанию: Для удобства можно установить box-sizing для всех элементов на странице, добавив следующий код в ваш CSS:

Последнее изменение: понедельник, 17 февраля 2025, 13:13