Все есть прямоугольники
Это алгоритм, который обрабатывает документ и отображает его на экране устройства.
Модель визуального форматирования задаёт трансформацию каждого элемента в документе и создаёт ноль, один или несколько боксов, согласно боксовой модели CSS
MDN Web DocsГенератор боксов - это часть модели визуального форматирования, которая создает боксы из элементов документа
It's who we are
Doesn't matter if we've gone too far
Doesn't matter if it's all okay
Боксовая модель
Каждый элемент блочного уровня генерирует главный бокс блочного уровня (principal block-level box) и в некоторых случаях дополнительные (например list-item генерирует бокс для буллета)
Блочные элементы по умолчанию:
p, div, h1, h2, h3, h4, h5, h6, ol, ul, pre, address, blockquote, dl, fieldset, form, hr, table
CSS-свойство:
display: block, list-item, table, flex...
Какой-то текст
с параграфом внутри
и текстом в конце.
с параграфом внутри
и текстом в конце.margin-left + /* css */
border-left + /* css */
padding-left + /* css */
content-width + /* ≠ width (css) */
padding-right + /* css */
border-right + /* css */
margin-right /* css */
= width содержащего блока
Это CSS-свойство, которое сообщает браузеру, каким образом производить расчет ширины и высоты элемента.
div {
width: 200px;
height: 200px;
}
div {
width: 20%;
height: 10%;
}
div {
width: 5em;
height: 5em;
}
I'm waking up
I feel it in my bonesdiv { width: 400px; height: 100px; }
Enough to make my system blow
Welcome to the new age, to the new agediv { width: 400px; height: 100px; } div div { margin: 0 20px; }
Enough to make my system blow
Welcome to the new age, to the new age
Welcome to the new age, to the new agediv { width: 400px; height: 100px; } div div { margin: 0 20px; }
Пишу тебе из пасмурных краёв
Где дождь наполнил город до краёв
Водой, в которой всё отраженоdiv { width: 400px; height: 100px; } div div { height: 100px; margin: 0 20px; }
I’m bulletproof, nothing to lose
Fire away, fire away
Ricochet you take your aimdiv { width: 400px; height: 100px; } div div { width: 600px; height: 100px; margin: 0 20px; }
Время остановилось между сказкой и былью,
Я стою на холодных плитах, покрытых звёздной пылью.div { height: 100px; } div div { max-width: 800px; height: 100px; margin: 0 20px; }
What if I wanted to break
Laugh it all off in your face
What would you do?div { width: 400px; } div div { margin: 20px; padding: 50px; }
top right bottom left
margin: 2px 30px 400px 5000px;
margin: 2px 30px 400px /* 30px */;
margin: 2px 30px /* 2px 30px */;
margin: 2px /* 2px 2px 2px */;
div div {
width: 50%;
}
div {
height: 400px;
}
div div {
height: 50%;
width: 50%;
}
div {
}
div div {
height: 50%;
width: 50%;
}
div div {
margin: 10%;
padding: 10%;
}
border: <размер> <тип> <цвет>;
border-left: <размер> <тип> <цвет>;
border-width: <размер> <размер> <размер> <размер>; border-type: <тип> <тип> <тип> <тип>; border-color: <цвет> <цвет> <цвет> <цвет>;
border-left-width: <размер>; border-left-type: <тип>; border-left-color: <цвет>;
div {
border: 20px dotted blue;
}
div {
border: 20px dashed blue;
}
div {
border: 20px solid blue;
}
div {
border-width: 20px;
border-style: solid;
border-color: blue red;
}
div {
border-width: 40px 20px;
border-style: solid dotted;
border-color: blue red;
}
.wrapper {
width: 666px;
padding: 10px 0;
}
.inner { }
.wrapper {
width: 666px;
padding: 10px 0;
}
.inner { }
.wrapper { width: 666px; }
.inner { margin-left: 500px; }
.wrapper { width: 666px; }
.inner {
margin-left: 500px;
margin-right: 66px;
}
.wrapper { width: 666px; }
.inner { width: 300px; }
.wrapper { width: 666px; }
.inner {
width: 300px;
margin-right: 0;
}
.wrapper { width: 666px; }
.inner {
width: 300px;
margin-left: auto
}
.wrapper { width: 666px; }
.inner {
width: 300px;
margin: 0 auto
}
.wrapper { width: 666px; }
.inner { margin-right: -100px; }
.wrapper { width: 666px; }
.inner {
margin-right: -100px;
margin-left: -100px;
}
.wrapper { width: 666px; }
.inner {
width: 50%;
margin-left: auto;
margin-right: -100px;
}
.first { margin-bottom: 30px; }
.second { margin-top: 60px; }
.inner { margin-top: 30px; }
.first { margin-bottom: 60px; }
.second { margin-top: 100px; }
.first { margin-bottom: 60px; }
.second { margin-top: -60px; }
.first { margin-bottom: 60px; }
.second { margin-top: -80px; }
Строчные элементы генерирует бокс(ы) строчного уровня.
Строчные элементы по-умолчанию:
CSS-свойство:
display: inline, inline-block, inline-table
Some inline
text followed
by a span
followed by
more inline text.
span {
height: 200px;
padding: 20px;
}
span {
background: #ffb9ee;
height: 200px;
padding: 20px;
}
.wrapper { width: 500px; } .inner { width: 50%; height: 120px; margin: 20px 0; }
.wrapper { width: 500px; } .inner { display: inline-block; width: 50%; height: 120px; margin: 20px 0; }