логотип PurpleSchool
логотип PurpleSchool

Блочная модель в CSS. Полное руководство с примерами

Автор

Дмитрий Нечаев

В веб-разработке все элементы на HTML-странице рассматриваются браузером как прямоугольники. Этот подход упрощает работу с элементами, позволяя разработчикам легко управлять их размерами и положением. Для понимания того, как браузер рассчитывает размер этих прямоугольников, необходимо изучить одну из основных концепций верстки – блочную модель (Box Model).

Основные составляющие блочной модели

Блочная модель состоит из нескольких компонентов, каждый из которых влияет на общий размер элемента. Эти компоненты включают:

  1. Content (Содержимое): основное содержимое элемента, его текст или другие вложенные элементы.
  2. Padding (Внутренние отступы): пространство между содержимым и границей элемента.
  3. Border (Граница): рамка вокруг элемента, которая может иметь разную толщину и стиль.
  4. Margin (Внешние отступы): пространство между границей элемента и соседними элементами.

Пример блочной модели

Рассмотрим пример HTML-элемента с применением CSS-стилей:

<div class="box">Пример содержимого</div>
.box {
  width: 200px; /* ширина содержимого */
  height: 100px; /* высота содержимого */
  padding: 20px; /* внутренние отступы */
  border: 5px solid black; /* граница */
  margin: 10px; /* внешние отступы */
}

На основе этого примера, рассмотрим, как рассчитывается общий размер элемента.

Расчет размеров элемента

Ширина элемента

Для расчета полной ширины элемента используются следующие компоненты:

  • Ширина содержимого (width)
  • Внутренние отступы (padding-left и padding-right)
  • Граница (border-left и border-right)
  • Внешние отступы (margin-left и margin-right)

Полная ширина элемента рассчитывается по формуле:

Полная ширина = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right

Применительно к нашему примеру:

Полная ширина = 200px (width) + 20px (padding-left) + 20px (padding-right) + 5px (border-left) + 5px (border-right) + 10px (margin-left) + 10px (margin-right) = 270px

Высота элемента

Для расчета полной высоты элемента используются аналогичные компоненты:

  • Высота содержимого (height)
  • Внутренние отступы (padding-top и padding-bottom)
  • Граница (border-top и border-bottom)
  • Внешние отступы (margin-top и margin-bottom)

Полная высота элемента рассчитывается по формуле:

Полная высота = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom

Применительно к нашему примеру:

Полная высота = 100px (height) + 20px (padding-top) + 20px (padding-bottom) + 5px (border-top) + 5px (border-bottom) + 10px (margin-top) + 10px (margin-bottom) = 170px

Блочная модель в действии

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

box-sizing

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

  • content-box (по умолчанию): размеры элемента рассчитываются только на основе содержимого, а padding и border добавляются к общей ширине и высоте.
  • border-box: размеры элемента включают padding и border, что упрощает расчет общей ширины и высоты.

Пример использования box-sizing:

.box {
  width: 200px;
  height: 100px;
  padding: 20px;
  border: 5px solid black;
  margin: 10px;
  box-sizing: border-box; /* Включаем padding и border в width и height */
}

В этом случае, полная ширина и высота элемента останутся 200px и 100px соответственно, так как padding и border уже включены в эти размеры.

Заключение

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

Стрелочка влевоПринцип каскада в CSS. Полное руководство с примерамиСвойство all в CSS. Полное руководство с примерамиСтрелочка вправо

Постройте личный план изучения Css до уровня Middle — бесплатно!

Css — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Css

Полное руководство по использованию свойства will-change в CSSПолное руководство по свойству transform-style в CSSИспользование функций CSS-трансформации; Полное руководствоПолное руководство по свойству transform-box в CSSУправление точкой опоры трансформаций в CSS с помощью transform-originУправление элементами с помощью свойства transform в CSSПолное руководство по свойству perspective-origin в CSSПолное руководство по свойству perspective в CSSПолное руководство по свойству backface-visibility в CSS
Универсальный селектор в CSS. Полное руководство с примерамиСелектор по тегу в CSS. Полное руководство с примерамиПеречисление селекторов в CSS. Полное руководство с примерамиСелектор потомка в CSS. Полное руководство с примерамиСелектор по идентификатору в CSS; Полное руководство с примерамиКомбинированные селекторы в CSS; Полное руководство с примерамиСелектор по классу в CSS; Полное руководство с примерамиСелектор по атрибуту в CSS; Полное руководство с примерами
Псевдокласс selection. Полное руководство с примерамиПсевдоэлементы в CSS. Полное руководство с примерамиПсевдоэлемент placeholder в CSS. Полное руководство с примерамиПсевдоэлемент marker в CSS. Полное руководство с примерамиПсевдоэлемент first-line в CSS. Полное руководство с примерамиПсевдоэлемент first-letter в CSS. Полное руководство с примерамиСвойство content в CSS. Полное руководство с примерамиПсевдоэлемент before в CSS. Полное руководство с примерамиПсевдоэлемент backdrop в CSS. Полное руководство с примерамиПсевдоэлемент after в CSS. Полное руководство с примерами
Псевдокласс where в CSS. Полное руководство с примерамиПсевдокласс visited в CSS. Полное руководство с примерамиПсевдоклассы группы type в CSS. Полное руководство с примерамиПсевдокласс target в CSS. Полное руководство с примерамиПсевдокласс root в CSS. Полное руководство с примерамиПсевдокласс required в CSS. Полное руководство с примерамиПсевдоклассы в CSS. Полное руководство с примерамиПсевдокласс placeholder-shown в CSS. Полное руководство с примерамиПсевдокласс optional в CSS. Полное руководство с примерамиПсевдокласс not в CSS. Полное руководство с примерамиПсевдокласс link в CSS. Полное руководство с примерамиПсевдокласс lang в CSS. Полное руководство с примерамиПсевдокласс is в CSS. Полное руководство с примерамиПсевдоклассы invalid и valid в CSS. Полное руководство с примерамиПсевдокласс indeterminate в CSS. Полное руководство с примерамиПсевдоклассы in-range и out-of-range. Полное руководство с примерамиПсевдокласс hover в CSS. Полное руководство с примерамиПсевдокласс has в CSS. Полное руководство с примерамиПсевдокласс focus-within в CSS. Полное руководство с примерамиПсевдокласс focus-visible в CSS. Полное руководство с примерамиПсевдокласс focus в CSS. Полное руководство с примерамиПсевдокласс empty в CSS. Полное руководство с примерамиПсевдоклассы disabled и enabled в CSS. Полное руководство с примерамиПсевдокласс default в CSS. Полное руководство с примерамиПсевдоклассы группы child в CSS. Полное руководство с примерамиПсевдокласс checked в CSS. Полное руководство с примерамиПсевдокласс active в CSS. Полное руководство с примерами
Функция var в CSS. Полное руководство с примерамиФункция url в CSS. Полное руководство с примерамиФункция repeating-radial-gradient в CSS. Полное руководство с примерамиФункция repeating-linear-gradient в CSS. Полное руководство с примерамиФункция repeating-conic-gradient в CSS. Полное руководство с примерамиФункция radial-gradient в CSS. Полное руководство с примерамиФункция min в CSS. Полное руководство с примерамиФункция max в CSS. Полное руководство с примерамиФункция linear-gradient в CSS. Полное руководство с примерамиФункция image-set в CSS. Полное руководство с примерамиФункции фильтров в CSS. Полное руководство с примерамиФункция conic-gradient в CSS. Полное руководство с примерамиФункция clamp в CSS. Полное руководство с примерамиФункция calc в CSS. Полное руководство с примерамиФункция attr в CSS. Полное руководство с примерами
Вендорные префиксы в CSS. Полное руководство с примерамиКонтекст наложения в CSS. Полное руководство с примерамиСпецифичность в CSS. Полное руководство с примерамиНаследование в CSS. Полное руководство с примерамиПодход «Pixel Perfect» в верстке сайтов. Полное руководство с примерамиCSS-правило. Полное руководство с примерамиКомментарии в CSS. Полное руководство с примерамиПринцип каскада в CSS. Полное руководство с примерамиБлочная модель в CSS. Полное руководство с примерамиСвойство all в CSS. Полное руководство с примерамиПодключение стилей к HTML. Полное руководство с примерами
Полное руководство по свойству will-change в CSSПолное руководство по transition-timing-function в CSSОсновы использования transition-property в CSS; управление плавными переходамиCSS transition-duration; Полное руководство по управлению продолжительностью переходовCSS transition-delay; Полное руководство по управлению задержкой переходовCSS transition; Полное руководство по созданию плавных переходовCSS @keyframes; Полное руководство по созданию анимацийCSS animation-timing-function; Полное руководство по управлению проигрыванием анимацийCSS animation-play-state; Полное руководство по управлению анимациямиCSS animation-name; Полное руководство по заданию имени анимацииCSS animation-iteration-count; Полное руководство по управлению количеством повторений анимацииCSS animation-fill-mode; Полное руководство по управлению состоянием элементов после анимацииCSS animation-duration; Полное руководство по управлению длительностью анимацииCSS animation-direction; Полное руководство по управлению направлением анимацииCSS animation-delay; Полное руководство с примерамиCSS-анимации; Полное руководство с примерами
Открыть базу знаний

Лучшие курсы по теме

изображение курса

HTML и CSS

Антон Ларичев
иконка часов6 бесплатных уроков
иконка звёздочки рейтинга4.8
Frontend
Mobile
изображение курса

TypeScript с нуля

Антон Ларичев
иконка часов6 бесплатных уроков
иконка звёздочки рейтинга4.8
Backend
Frontend
Mobile
изображение курса

Next.js - с нуля

Антон Ларичев
иконка часов8 бесплатных уроков
иконка звёздочки рейтинга4.7
Frontend