Темная тема
Блочная модель
Что такое box model?
Каждый элемент на веб-странице можно представить как прямоугольную коробку (box), которая состоит из нескольких областей:
- Content - основная область, где отображается текст, изображение и т.д;
- Padding - внутренний отступ (расстояние между Content и Border);
- Border - рамка вокруг Content и Padding;
- Margin - внешний отступ (пространство снаружи элемента).
sh
┌────────────────────────────────────────────┐
│ MARGIN │←---margin (внешний отступ)
│ ┌──────────────────────────────────────┐ │
│ │ BORDER │←------border (граница)
│ │ ┌──────────────────────────────┐ │ │
│ │ │ PADDING │←-----------padding (внутренний отступ)
│ │ │ ┌──────────────────────┐ │ │ │
│ │ │ │ CONTENT │ │ │ │
│ │ │ └──────────────────────┘ │ │ │
│ │ └──────────────────────────────┘ │ │
│ └──────────────────────────────────────┘ │
└────────────────────────────────────────────┘
Типы блочных моделей
box-sizing
- блочная модель;content-box
-width
иheight
прибавляются кpadding
иborder
(используется по умолчанию);border-box
-width
иheight
задают размер всей коробки;
Например. Изменим файл index.html
:
html
<div class="content-box-example">content-box</div>
<div class="border-box-example">border-box</div>
Изменим файл styles.css
:
css
.content-box-example,
.border-box-example {
width: 200px;
height: 100px;
padding: 20px;
margin: 20px;
}
.content-box-example {
border: 5px solid blue;
background: lightblue;
box-sizing: content-box;
}
.border-box-example {
border: 5px solid green;
background: lightgreen;
box-sizing: border-box;
}
Ширина синей области = width
+ padding
* 2 + border
* 2 = 200 + 20 * 2 + 5 * 2 = 250px;
Высота синей области = height
+ padding
* 2 + border
* 2 = 100 + 20 * 2 + 5 * 2 = 150px;
Ширина зелёной области = width
(высчитывается автоматически) + padding
* 2 + border
* 2 = 150 + 20 * 2 + 5 * 2 = 200px;
Высота зелёной области = height
(высчитывается автоматически) + padding
* 2 + border
* 2 = 50 + 20 * 2 + 5 * 2 = 100px;