Причина, по которой CSS использует блочную модель как:
+---------------------
| Margin
| +-------------------
| | Border
| | +-----------------
| | | Padding
| | | +---------------
| | | | Width x Height
, заключается в том, что CSS является языком для оформления документов .Он был (изначально) разработан с учетом исследовательских работ и других формальных документов, а не как способ сделать красивую графику.Таким образом, модель вращается вокруг содержимого , а не контейнера.
CSS - это не язык программирования, это язык стилей.В нем явно не указано, как должен отображаться документ, а предлагает некоторые рекомендации, которым должен следовать браузер.Все они могут быть перезаписаны и изменены реальным языком программирования: JavaScript.
Возвращаясь к идее модели содержимого, рассмотрим следующий CSS:
p
{
background-color: #EEE;
border: 1px solid #CCC;
color: #000;
margin: 10px;
padding: 9px;
width: 400px;
}
height
isn 't, поскольку content определяет высоту, она может быть длинной, короткой, но неизвестной и неважной.width
установлен в 400px, потому что именно так должен быть контент (текст).
padding
- это просто средство расширения цвета фона, чтобы текст могбыть хорошо читаемым вдали от краев, точно так же, как вы оставляете пространство при письме / печати на листе бумаги.
* border
- это средство окружения некоторого содержимого, чтобы отличать его от других фоновчтобы обеспечить границу (рисунок) между различными элементами.
* margin
говорит абзацу оставить некоторое пространство между краями, и при свертывании полей каждая группа останется равномерно распределенной, не указывая другойполе для первого или последнего элемента.
Для поддержания текучести width
по умолчанию равно auto
, что означает, что ширина будет максимально широкой:
- без сдавливаниянеобоснованно
- без заполнения, выходящего за пределы контейнера
Конечно, в крайних случаях заполнение будет расширятьсяd его контейнер, потому что содержимое может быть сжатым. Все дело в контенте.