0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке мы познакомимся с принципами, по которым элементы выводятся на страницу и получают определённый размер.</p>
1
<p>В этом уроке мы познакомимся с принципами, по которым элементы выводятся на страницу и получают определённый размер.</p>
2
<h3>display</h3>
2
<h3>display</h3>
3
<p>У элементов есть свойство display. Оно задаёт то, как элемент выводится на экран.</p>
3
<p>У элементов есть свойство display. Оно задаёт то, как элемент выводится на экран.</p>
4
<p><em>Здесь к слову display можно относиться как к глаголу: to display - показывать, выводить на экран.</em></p>
4
<p><em>Здесь к слову display можно относиться как к глаголу: to display - показывать, выводить на экран.</em></p>
5
<p><a>https://codepen.io/hexlet/pen/aLXVKB</a></p>
5
<p><a>https://codepen.io/hexlet/pen/aLXVKB</a></p>
6
<ul><li>display: block начинается с новой строки и занимает всю ширину</li>
6
<ul><li>display: block начинается с новой строки и занимает всю ширину</li>
7
<li>display: inline начинается в любом месте и занимает столько ширины, сколько нужно для помещения содержания</li>
7
<li>display: inline начинается в любом месте и занимает столько ширины, сколько нужно для помещения содержания</li>
8
</ul><p>Всего у этого свойства 20 возможных значений, но прямо сейчас остальные не так важны.</p>
8
</ul><p>Всего у этого свойства 20 возможных значений, но прямо сейчас остальные не так важны.</p>
9
<p>Браузер обычно применяет базовые стили по умолчанию ко многим элементам. Например, элемент p по умолчанию имеет display: block.</p>
9
<p>Браузер обычно применяет базовые стили по умолчанию ко многим элементам. Например, элемент p по умолчанию имеет display: block.</p>
10
<p>Разные браузеры могут задавать разные стили по умолчанию, и иногда эти стили могут отличаться. Поэтому одна и та же страница может выглядеть по-разному в разных браузерах. Это в основном касается размеров и отступов. Для решения этой проблемы существуют так называемые CSS Reset - наборы CSS-стилей, которые "сбрасывают" браузерные стили.</p>
10
<p>Разные браузеры могут задавать разные стили по умолчанию, и иногда эти стили могут отличаться. Поэтому одна и та же страница может выглядеть по-разному в разных браузерах. Это в основном касается размеров и отступов. Для решения этой проблемы существуют так называемые CSS Reset - наборы CSS-стилей, которые "сбрасывают" браузерные стили.</p>
11
<p>Вот<a>пример таких reset-стилей</a>.</p>
11
<p>Вот<a>пример таких reset-стилей</a>.</p>
12
<h3>div & span</h3>
12
<h3>div & span</h3>
13
<p>Элемент p имеет<strong>семантическое значение</strong>. Он определяет абзац текста.</p>
13
<p>Элемент p имеет<strong>семантическое значение</strong>. Он определяет абзац текста.</p>
14
<p>Такой элемент не стоит использовать там, где это по смыслу не имеет значения. Например, не стоит помещать в p меню с кнопками для навигации по сайту.</p>
14
<p>Такой элемент не стоит использовать там, где это по смыслу не имеет значения. Например, не стоит помещать в p меню с кнопками для навигации по сайту.</p>
15
<p>Два самых используемых элемента - div и span - не имеют семантического значения. Они нужны исключительно для структуры и стилей.</p>
15
<p>Два самых используемых элемента - div и span - не имеют семантического значения. Они нужны исключительно для структуры и стилей.</p>
16
<ul><li>div - это блочный (block-level) элемент, у него свойство display: block.</li>
16
<ul><li>div - это блочный (block-level) элемент, у него свойство display: block.</li>
17
<li>span - это строчный (inline-level) элемент, у него свойство display: inline.</li>
17
<li>span - это строчный (inline-level) элемент, у него свойство display: inline.</li>
18
</ul><p>Конечно, вы можете изменить эти свойства в своём CSS, но лучше так не делать. В целом,<strong>лучше не менять базовые свойства у типов элементов, а добавлять классы по необходимости</strong>.</p>
18
</ul><p>Конечно, вы можете изменить эти свойства в своём CSS, но лучше так не делать. В целом,<strong>лучше не менять базовые свойства у типов элементов, а добавлять классы по необходимости</strong>.</p>
19
<p>div обычно используется для определения какого-то крупного блока на странице. А span - для небольшого элемента на строке.</p>
19
<p>div обычно используется для определения какого-то крупного блока на странице. А span - для небольшого элемента на строке.</p>
20
<h3>Блочная модель</h3>
20
<h3>Блочная модель</h3>
21
<p><strong>Каждый элемент на странице - прямоугольник</strong>. Это, пожалуй, самое важное утверждение в вёрстке веб-страниц. В примере в начале этого урока это можно заметить: мы задали параграфам фоновый цвет, и стало видно: каждый параграф - это прямоугольник.</p>
21
<p><strong>Каждый элемент на странице - прямоугольник</strong>. Это, пожалуй, самое важное утверждение в вёрстке веб-страниц. В примере в начале этого урока это можно заметить: мы задали параграфам фоновый цвет, и стало видно: каждый параграф - это прямоугольник.</p>
22
<p>У каждого прямоугольника есть несколько свойств, влияющих на размер:</p>
22
<p>У каждого прямоугольника есть несколько свойств, влияющих на размер:</p>
23
<ul><li>width, height - ширина и высота элемента</li>
23
<ul><li>width, height - ширина и высота элемента</li>
24
<li>padding - отступ внутри элемента (расстояние от содержания до границы прямоугольника)</li>
24
<li>padding - отступ внутри элемента (расстояние от содержания до границы прямоугольника)</li>
25
<li>border - толщина границы (обводки)</li>
25
<li>border - толщина границы (обводки)</li>
26
<li>margin - отступ снаружи элемента (расстояние от границы прямоугольника до соседних элементов)</li>
26
<li>margin - отступ снаружи элемента (расстояние от границы прямоугольника до соседних элементов)</li>
27
</ul><p>Давайте сделаем элемент, в котором явно видно все эти части:</p>
27
</ul><p>Давайте сделаем элемент, в котором явно видно все эти части:</p>
28
<p><a>https://codepen.io/hexlet/pen/qPgpwL</a></p>
28
<p><a>https://codepen.io/hexlet/pen/qPgpwL</a></p>
29
<p>Мы использовали значение inline-block у свойства display. Это в какой-то степени комбинация inline и block. Элемент не занимает всю ширину и может находится на одной строке с другими элементами. При этом у него можно задать параметры, свойственные block: конкретную ширину и высоту.</p>
29
<p>Мы использовали значение inline-block у свойства display. Это в какой-то степени комбинация inline и block. Элемент не занимает всю ширину и может находится на одной строке с другими элементами. При этом у него можно задать параметры, свойственные block: конкретную ширину и высоту.</p>
30
<p>Сколько же места требуется всему элементу? Нужно сложить показатели:</p>
30
<p>Сколько же места требуется всему элементу? Нужно сложить показатели:</p>
31
<ul><li><strong>Высота</strong>: высота элемента + внутренний отступ + толщина границы + внешний отступ (height + padding + border + margin) - 70 + 10 + 8 + 15 =<strong>103px</strong>.</li>
31
<ul><li><strong>Высота</strong>: высота элемента + внутренний отступ + толщина границы + внешний отступ (height + padding + border + margin) - 70 + 10 + 8 + 15 =<strong>103px</strong>.</li>
32
<li><strong>Ширина</strong>: ширина элемента + внутренний отступ + толщина границы + внешний отступ (width + padding + border + margin) - 100 + 10 + 0 + 15 =<strong>125</strong>.</li>
32
<li><strong>Ширина</strong>: ширина элемента + внутренний отступ + толщина границы + внешний отступ (width + padding + border + margin) - 100 + 10 + 0 + 15 =<strong>125</strong>.</li>
33
</ul><p>Границы и отступы можно задать свои для каждой из сторон:</p>
33
</ul><p>Границы и отступы можно задать свои для каждой из сторон:</p>
34
34