HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#База знаний</a></p>
1 <p><a>#База знаний</a></p>
2 <ul><li>29 апр 2025</li>
2 <ul><li>29 апр 2025</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Рассказываем о том, как устроен один из ключевых элементов HTML-разметки.</p>
4 </ul><p>Рассказываем о том, как устроен один из ключевых элементов HTML-разметки.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
7 <p>Большинство веб-страниц состоит из контейнеров, которые группируют элементы и управляют их расположением. Один из самых популярных - тег &lt; div &gt;. Если коротко, это универсальный контейнер для удобного управления стилями HTML-элементов.</p>
7 <p>Большинство веб-страниц состоит из контейнеров, которые группируют элементы и управляют их расположением. Один из самых популярных - тег &lt; div &gt;. Если коротко, это универсальный контейнер для удобного управления стилями HTML-элементов.</p>
8 <p>Тег &lt; div &gt; (от division - секция, раздел) - блочный элемент HTML, который используется для создания контейнеров на веб-странице. Тег помогает структурировать контент: объединять текст, изображения, формы и другие элементы в логические блоки.</p>
8 <p>Тег &lt; div &gt; (от division - секция, раздел) - блочный элемент HTML, который используется для создания контейнеров на веб-странице. Тег помогает структурировать контент: объединять текст, изображения, формы и другие элементы в логические блоки.</p>
9 <p><strong>Содержание</strong></p>
9 <p><strong>Содержание</strong></p>
10 <ul><li><a>Зачем нужен &lt; div &gt; в языке HTML, какой у него базовый синтаксис и как его используют</a></li>
10 <ul><li><a>Зачем нужен &lt; div &gt; в языке HTML, какой у него базовый синтаксис и как его используют</a></li>
11 <li><a>Как работают а</a><a>трибуты &lt; div &gt;: стилизация, вложенность и другие особенности</a></li>
11 <li><a>Как работают а</a><a>трибуты &lt; div &gt;: стилизация, вложенность и другие особенности</a></li>
12 <li><a>Советы и лайфхаки по использованию &lt; div &gt;</a></li>
12 <li><a>Советы и лайфхаки по использованию &lt; div &gt;</a></li>
13 <li><a>Типичные ошибки при работе с &lt; div &gt;</a></li>
13 <li><a>Типичные ошибки при работе с &lt; div &gt;</a></li>
14 <li><a>Практика: создание макетов с &lt; div &gt;, Flexbox и Grid Layout</a></li>
14 <li><a>Практика: создание макетов с &lt; div &gt;, Flexbox и Grid Layout</a></li>
15 <li><a>Домашнее задание</a></li>
15 <li><a>Домашнее задание</a></li>
16 </ul><p>Тег &lt; div &gt; - универсальный блочный контейнер, который не несёт семантического значения. В отличие от тегов вроде &lt;article&gt; или &lt;section&gt;, он ничего не говорит о смысле содержимого внутри. В контейнеры &lt; div &gt; можно положить что угодно: текст, картинки, другие теги, целые фрагменты интерфейса. Именно поэтому он используется как основной строительный блок вёрстки, особенно когда нужно сгруппировать элементы или задать им стили.</p>
16 </ul><p>Тег &lt; div &gt; - универсальный блочный контейнер, который не несёт семантического значения. В отличие от тегов вроде &lt;article&gt; или &lt;section&gt;, он ничего не говорит о смысле содержимого внутри. В контейнеры &lt; div &gt; можно положить что угодно: текст, картинки, другие теги, целые фрагменты интерфейса. Именно поэтому он используется как основной строительный блок вёрстки, особенно когда нужно сгруппировать элементы или задать им стили.</p>
17 <p>Использовать &lt; div &gt; в HTML-документе просто. Чтобы создать блочный контейнер, достаточно поместить контент между открывающим тегом &lt; div &gt; и закрывающим тегом &lt;/div&gt;:</p>
17 <p>Использовать &lt; div &gt; в HTML-документе просто. Чтобы создать блочный контейнер, достаточно поместить контент между открывающим тегом &lt; div &gt; и закрывающим тегом &lt;/div&gt;:</p>
18 &lt; div &gt; &lt;h1&gt;Привет, Мир!&lt;/h1&gt; &lt;h2&gt;Это пример контейнера &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/h2&gt; &lt;/div&gt;<p>Вот так будет выглядеть в браузере приведённый выше пример кода:</p>
18 &lt; div &gt; &lt;h1&gt;Привет, Мир!&lt;/h1&gt; &lt;h2&gt;Это пример контейнера &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/h2&gt; &lt;/div&gt;<p>Вот так будет выглядеть в браузере приведённый выше пример кода:</p>
19 <em>Скриншот: Google Chrome / Skillbox Media</em><p>На следующем изображении показана область, занимаемая тегом &lt; div &gt;. Обратите внимание на то, что сам контейнер по умолчанию невидимый:</p>
19 <em>Скриншот: Google Chrome / Skillbox Media</em><p>На следующем изображении показана область, занимаемая тегом &lt; div &gt;. Обратите внимание на то, что сам контейнер по умолчанию невидимый:</p>
20 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Тег &lt; div &gt; - блочный элемент, как параграфы, списки, &lt;pre&gt;, заголовки или таблицы. Это значит, что блок &lt;div &gt; занимает всю доступную ширину родительского элемента (по умолчанию 100% экрана). Если добавить ещё один блок &lt; div &gt; после предыдущего, он начнётся с новой строки:</p>
20 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Тег &lt; div &gt; - блочный элемент, как параграфы, списки, &lt;pre&gt;, заголовки или таблицы. Это значит, что блок &lt;div &gt; занимает всю доступную ширину родительского элемента (по умолчанию 100% экрана). Если добавить ещё один блок &lt; div &gt; после предыдущего, он начнётся с новой строки:</p>
21 &lt;!-- Первый div --&gt; &lt; div &gt; &lt;span&gt;Это 1-й контейнер DIV&lt;/span&gt; &lt;/div&gt; &lt;!-- Второй div --&gt; &lt; div &gt; &lt;span&gt;Это 2-й контейнер DIV&lt;/span&gt; &lt;/div&gt;<p>Несмотря на то что в примере контент каждого из контейнеров заключён в строчные теги &lt;span&gt;, содержимое разных блоков &lt; div &gt; будет начинаться с новой строки.</p>
21 &lt;!-- Первый div --&gt; &lt; div &gt; &lt;span&gt;Это 1-й контейнер DIV&lt;/span&gt; &lt;/div&gt; &lt;!-- Второй div --&gt; &lt; div &gt; &lt;span&gt;Это 2-й контейнер DIV&lt;/span&gt; &lt;/div&gt;<p>Несмотря на то что в примере контент каждого из контейнеров заключён в строчные теги &lt;span&gt;, содержимое разных блоков &lt; div &gt; будет начинаться с новой строки.</p>
22 <p>Зоны разных тегов &lt; div &gt; на изображении для наглядности обведены разными цветами, а ширина страницы продлена до конца:</p>
22 <p>Зоны разных тегов &lt; div &gt; на изображении для наглядности обведены разными цветами, а ширина страницы продлена до конца:</p>
23 <em>Инфографика: Skillbox Media</em><p>Комбинируя блоки &lt; div &gt;, можно строить любые макеты - от простых колонок до сложных интерфейсов. Этот тег позволяет группировать элементы, управлять их расположением и создавать документы со структурой любой сложности.</p>
23 <em>Инфографика: Skillbox Media</em><p>Комбинируя блоки &lt; div &gt;, можно строить любые макеты - от простых колонок до сложных интерфейсов. Этот тег позволяет группировать элементы, управлять их расположением и создавать документы со структурой любой сложности.</p>
24 <p>Раньше для сложных макетов часто использовали вложенные &lt; div &gt; с позиционированием и float, но сегодня в ходу более гибкие и удобные инструменты - CSS Grid и Flexbox. Они дают больше контроля над вёрсткой и избавляют от необходимости плодить лишние контейнеры.</p>
24 <p>Раньше для сложных макетов часто использовали вложенные &lt; div &gt; с позиционированием и float, но сегодня в ходу более гибкие и удобные инструменты - CSS Grid и Flexbox. Они дают больше контроля над вёрсткой и избавляют от необходимости плодить лишние контейнеры.</p>
25 <p>Тег &lt; div &gt; поддерживает различные атрибуты, такие как id, class, style и другие. Вложенные &lt; div &gt; позволяют группировать элементы в сложные структуры.</p>
25 <p>Тег &lt; div &gt; поддерживает различные атрибуты, такие как id, class, style и другие. Вложенные &lt; div &gt; позволяют группировать элементы в сложные структуры.</p>
26 <p>Атрибут title задает текст всплывающей подсказки, которая отображается при наведении курсора на содержимое контейнера:</p>
26 <p>Атрибут title задает текст всплывающей подсказки, которая отображается при наведении курсора на содержимое контейнера:</p>
27 &lt;!-- Пример с title --&gt; &lt;div title="Подсказка, привет!"&gt; Основной текст &lt;/div&gt;<em>Скриншот: Google Chrome / Skillbox Media</em><p>Атрибут id - уникальный идентификатор элемента. Его используют как для стилизации с помощью CSS, так и для обращения к элементу по его id через JavaScript:</p>
27 &lt;!-- Пример с title --&gt; &lt;div title="Подсказка, привет!"&gt; Основной текст &lt;/div&gt;<em>Скриншот: Google Chrome / Skillbox Media</em><p>Атрибут id - уникальный идентификатор элемента. Его используют как для стилизации с помощью CSS, так и для обращения к элементу по его id через JavaScript:</p>
28 &lt;!-- Пример с id --&gt; &lt;div id="box01"&gt; Какой-то контент 1 &lt;/div&gt;<p>По стандарту id должен быть уникальным - один и тот же идентификатор нельзя использовать для нескольких элементов на странице. Это трудно контролировать, особенно в компонентах или при копировании кода. К тому же атрибут id имеет высокую специфичность в CSS и плохо переопределяется. Поэтому для стилизации лучше использовать классы, а id применять только для JavaScript и якорей.</p>
28 &lt;!-- Пример с id --&gt; &lt;div id="box01"&gt; Какой-то контент 1 &lt;/div&gt;<p>По стандарту id должен быть уникальным - один и тот же идентификатор нельзя использовать для нескольких элементов на странице. Это трудно контролировать, особенно в компонентах или при копировании кода. К тому же атрибут id имеет высокую специфичность в CSS и плохо переопределяется. Поэтому для стилизации лучше использовать классы, а id применять только для JavaScript и якорей.</p>
29 <p>Атрибут class указывает имя одного или нескольких классов для контейнера. Классы используются для стилизации с помощью CSS, позволяя применять одинаковые стили к группе тегов &lt; div &gt;.</p>
29 <p>Атрибут class указывает имя одного или нескольких классов для контейнера. Классы используются для стилизации с помощью CSS, позволяя применять одинаковые стили к группе тегов &lt; div &gt;.</p>
30 &lt;!-- Пример с class --&gt; &lt;div class="classA"&gt; Какой-то контент 2 &lt;/div&gt; &lt;!-- Пример с множеством class --&gt; &lt;div class="classA classB classC"&gt; Какой-то контент 3 &lt;/div&gt;<p>Если нужно использовать несколько классов, просто перечислите их через пробел в значении атрибута class.</p>
30 &lt;!-- Пример с class --&gt; &lt;div class="classA"&gt; Какой-то контент 2 &lt;/div&gt; &lt;!-- Пример с множеством class --&gt; &lt;div class="classA classB classC"&gt; Какой-то контент 3 &lt;/div&gt;<p>Если нужно использовать несколько классов, просто перечислите их через пробел в значении атрибута class.</p>
31 <p>Атрибут contenteditable позволяет пользователю редактировать содержимое элемента прямо на странице. Он принимает значения true (разрешает редактирование) и false (запрещает):</p>
31 <p>Атрибут contenteditable позволяет пользователю редактировать содержимое элемента прямо на странице. Он принимает значения true (разрешает редактирование) и false (запрещает):</p>
32 &lt;div contenteditable="true"&gt;Имя: &lt;/div&gt;<p>При наведении на содержимое элемента на веб-странице появится курсор. Пользователь сможет удалить существующий текст или ввести свой. Например: "My name is …":</p>
32 &lt;div contenteditable="true"&gt;Имя: &lt;/div&gt;<p>При наведении на содержимое элемента на веб-странице появится курсор. Пользователь сможет удалить существующий текст или ввести свой. Например: "My name is …":</p>
33 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Элемент &lt; div &gt; можно стилизовать разными способами. Один из них - использование атрибута style. Например, добавим контейнеру рамку и зададим фон:</p>
33 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Элемент &lt; div &gt; можно стилизовать разными способами. Один из них - использование атрибута style. Например, добавим контейнеру рамку и зададим фон:</p>
34 &lt;!-- Красный контейнер с рамкой --&gt; &lt;div style="background-color: red; border: solid;"&gt; Контейнер №1 &lt;/div&gt; &lt;!-- Жёлтый контейнер с рамкой --&gt; &lt;div style="background-color: yellow; border: solid;"&gt; Контейнер №2 &lt;/div&gt;<p>Атрибут style позволяет применять CSS-стили напрямую к тегу, в нашем случае - к &lt; div &gt;. Например, свойство background-color задаёт цвет фона, а border: solid добавляет рамку. В примере используются цветовые константы red и yellow для фона контейнера:</p>
34 &lt;!-- Красный контейнер с рамкой --&gt; &lt;div style="background-color: red; border: solid;"&gt; Контейнер №1 &lt;/div&gt; &lt;!-- Жёлтый контейнер с рамкой --&gt; &lt;div style="background-color: yellow; border: solid;"&gt; Контейнер №2 &lt;/div&gt;<p>Атрибут style позволяет применять CSS-стили напрямую к тегу, в нашем случае - к &lt; div &gt;. Например, свойство background-color задаёт цвет фона, а border: solid добавляет рамку. В примере используются цветовые константы red и yellow для фона контейнера:</p>
35 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Такой способ считается довольно топорным: он засоряет HTML-разметку и плохо масштабируется. Лучше выносить стили в CSS и использовать классы - это чище, гибче и проще в поддержке.</p>
35 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Такой способ считается довольно топорным: он засоряет HTML-разметку и плохо масштабируется. Лучше выносить стили в CSS и использовать классы - это чище, гибче и проще в поддержке.</p>
36 <p>Тег &lt; div &gt; может быть вложен в другой &lt; div &gt;, позволяя создавать многоуровневые структуры для более точного управления контентом. Один из способов стилизации - использование CSS-классов, которые задаются через атрибут class.</p>
36 <p>Тег &lt; div &gt; может быть вложен в другой &lt; div &gt;, позволяя создавать многоуровневые структуры для более точного управления контентом. Один из способов стилизации - использование CSS-классов, которые задаются через атрибут class.</p>
37 <p>Рассмотрим пример такой структуры в HTML:</p>
37 <p>Рассмотрим пример такой структуры в HTML:</p>
38 &lt;div class="container"&gt; container &lt;div class="header"&gt;Заголовок&lt;/div&gt; &lt;div class="content"&gt; content &lt;div class="article"&gt;Статья 1&lt;/div&gt; &lt;div class="article"&gt;Статья 2&lt;/div&gt; /content &lt;/div&gt; &lt;div class="footer"&gt;Подвал&lt;/div&gt; /container &lt;/div&gt;<p>Используя селекторы классов в CSS, задаём разные цвета каждому блоку &lt; div &gt;:</p>
38 &lt;div class="container"&gt; container &lt;div class="header"&gt;Заголовок&lt;/div&gt; &lt;div class="content"&gt; content &lt;div class="article"&gt;Статья 1&lt;/div&gt; &lt;div class="article"&gt;Статья 2&lt;/div&gt; /content &lt;/div&gt; &lt;div class="footer"&gt;Подвал&lt;/div&gt; /container &lt;/div&gt;<p>Используя селекторы классов в CSS, задаём разные цвета каждому блоку &lt; div &gt;:</p>
39 .container { background-color: yellow; } .header { background-color: blue; } .content { background-color: red; } .article { background-color: white; } .footer { background-color: green; }<p>Таким образом, используя вложенные &lt; div &gt; и применяя к ним стили через CSS, мы создали базовую структуру веб-страницы:</p>
39 .container { background-color: yellow; } .header { background-color: blue; } .content { background-color: red; } .article { background-color: white; } .footer { background-color: green; }<p>Таким образом, используя вложенные &lt; div &gt; и применяя к ним стили через CSS, мы создали базовую структуру веб-страницы:</p>
40 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Тег &lt; div &gt; помогает группировать элементы, но не всегда уместен. Важно понимать разницу между ним и семантическими тегами, а также знать, когда его использование оправданно, а когда лучше обойтись без него.</p>
40 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Тег &lt; div &gt; помогает группировать элементы, но не всегда уместен. Важно понимать разницу между ним и семантическими тегами, а также знать, когда его использование оправданно, а когда лучше обойтись без него.</p>
41 <p>Семантические теги - это контейнеры, которые сразу указывают на тип содержимого внутри. Они делают код понятнее, улучшают доступность и структурируют страницу. К таким тегам относятся &lt;header&gt;, &lt;nav&gt;, &lt;article&gt;, &lt;footer&gt; и другие.</p>
41 <p>Семантические теги - это контейнеры, которые сразу указывают на тип содержимого внутри. Они делают код понятнее, улучшают доступность и структурируют страницу. К таким тегам относятся &lt;header&gt;, &lt;nav&gt;, &lt;article&gt;, &lt;footer&gt; и другие.</p>
42 <p>Тег &lt; div &gt; не несёт семантической нагрузки - он просто создаёт блок без указания на его смысл.</p>
42 <p>Тег &lt; div &gt; не несёт семантической нагрузки - он просто создаёт блок без указания на его смысл.</p>
43 <p>❌ Когда есть семантические теги (&lt;header&gt;, &lt;section&gt; или &lt;article&gt;).</p>
43 <p>❌ Когда есть семантические теги (&lt;header&gt;, &lt;section&gt; или &lt;article&gt;).</p>
44 <p>Использование семантических тегов делает структуру кода более понятной как разработчикам, так и поисковым системам.</p>
44 <p>Использование семантических тегов делает структуру кода более понятной как разработчикам, так и поисковым системам.</p>
45 <p>Пример архитектуры с использованием &lt; div &gt;:</p>
45 <p>Пример архитектуры с использованием &lt; div &gt;:</p>
46 &lt;div class="header"&gt; &lt;h1&gt;Заголовок&lt;/h1&gt; &lt;/div&gt; &lt;div class="main"&gt; &lt;div class="article"&gt; &lt;p&gt;Содержимое&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="footer"&gt; &lt;p&gt;2025 Skillbox&lt;/p&gt; &lt;/div&gt;<p>Пример той же архитектуры с семантическими тегами:</p>
46 &lt;div class="header"&gt; &lt;h1&gt;Заголовок&lt;/h1&gt; &lt;/div&gt; &lt;div class="main"&gt; &lt;div class="article"&gt; &lt;p&gt;Содержимое&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class="footer"&gt; &lt;p&gt;2025 Skillbox&lt;/p&gt; &lt;/div&gt;<p>Пример той же архитектуры с семантическими тегами:</p>
47 &lt;header&gt; &lt;h1&gt;Заголовок&lt;/h1&gt; &lt;/header&gt; &lt;main&gt; &lt;article&gt; &lt;p&gt;Содержимое&lt;/p&gt; &lt;/article&gt; &lt;/main&gt; &lt;footer&gt; &lt;p&gt;2025 Skillbox&lt;/p&gt; &lt;/footer&gt;<p>❌ Когда элемент сам по себе несёт семантическую нагрузку (&lt;button&gt;, &lt;a&gt;, &lt;form&gt;).</p>
47 &lt;header&gt; &lt;h1&gt;Заголовок&lt;/h1&gt; &lt;/header&gt; &lt;main&gt; &lt;article&gt; &lt;p&gt;Содержимое&lt;/p&gt; &lt;/article&gt; &lt;/main&gt; &lt;footer&gt; &lt;p&gt;2025 Skillbox&lt;/p&gt; &lt;/footer&gt;<p>❌ Когда элемент сам по себе несёт семантическую нагрузку (&lt;button&gt;, &lt;a&gt;, &lt;form&gt;).</p>
48 <p>Тег &lt;a&gt; - стандартный элемент для создания гиперссылок. Использовать &lt; div &gt; для этой цели тоже можно, но это нарушает логику HTML, усложняет код и ухудшает его доступность:</p>
48 <p>Тег &lt;a&gt; - стандартный элемент для создания гиперссылок. Использовать &lt; div &gt; для этой цели тоже можно, но это нарушает логику HTML, усложняет код и ухудшает его доступность:</p>
49 &lt;div class="link" onclick="location.href='https://skillbox.ru'"&gt; Начать обучение &lt;/div&gt;<p>В таком случае лучше использовать созданный для гиперссылок тег &lt;a&gt;:</p>
49 &lt;div class="link" onclick="location.href='https://skillbox.ru'"&gt; Начать обучение &lt;/div&gt;<p>В таком случае лучше использовать созданный для гиперссылок тег &lt;a&gt;:</p>
50 &lt;a href="https://skillbox.ru"&gt;Начать обучение&lt;/a&gt;<p>❌ Когда &lt; div &gt; используется "на всякий случай", без реальной нужды.</p>
50 &lt;a href="https://skillbox.ru"&gt;Начать обучение&lt;/a&gt;<p>❌ Когда &lt; div &gt; используется "на всякий случай", без реальной нужды.</p>
51 <p>Такой подход загромождает код и усложняет его восприятие. Перед созданием нового &lt; div &gt; стоит проверить, нет ли более подходящего семантического тега или возможности обойтись без дополнительного контейнера.</p>
51 <p>Такой подход загромождает код и усложняет его восприятие. Перед созданием нового &lt; div &gt; стоит проверить, нет ли более подходящего семантического тега или возможности обойтись без дополнительного контейнера.</p>
52 <p>✅ Когда нужно сгруппировать элементы и применить к ним общие стили или логику поведения.</p>
52 <p>✅ Когда нужно сгруппировать элементы и применить к ним общие стили или логику поведения.</p>
53 <p>С помощью &lt; div &gt; удобно сгруппировать элементы по их смыслу и как бы связать в единый объект. Например, это может быть карточка товара для маркетплейса либо карточка информации о пользователе.</p>
53 <p>С помощью &lt; div &gt; удобно сгруппировать элементы по их смыслу и как бы связать в единый объект. Например, это может быть карточка товара для маркетплейса либо карточка информации о пользователе.</p>
54 &lt;div class="card"&gt; &lt;h2&gt;Название&lt;/h2&gt; &lt;p&gt;Описание карточки&lt;/p&gt; &lt;button&gt;Действие&lt;/button&gt; &lt;/div&gt;<p>✅ Когда нужно динамически управлять контейнером, используя JavaScript.</p>
54 &lt;div class="card"&gt; &lt;h2&gt;Название&lt;/h2&gt; &lt;p&gt;Описание карточки&lt;/p&gt; &lt;button&gt;Действие&lt;/button&gt; &lt;/div&gt;<p>✅ Когда нужно динамически управлять контейнером, используя JavaScript.</p>
55 <p>Пример ниже показывает, как удобно управлять контейнером &lt; div &gt; и его атрибутом id с помощью JavaScript в режиме реального времени:</p>
55 <p>Пример ниже показывает, как удобно управлять контейнером &lt; div &gt; и его атрибутом id с помощью JavaScript в режиме реального времени:</p>
56 &lt;script&gt; function test() { const container = document.getElementById('dynamic-container'); // дальнейший код ... } &lt;/script&gt;<p>✅ При создании макетов - в связке с CSS Flexbox или CSS Grid Layout.</p>
56 &lt;script&gt; function test() { const container = document.getElementById('dynamic-container'); // дальнейший код ... } &lt;/script&gt;<p>✅ При создании макетов - в связке с CSS Flexbox или CSS Grid Layout.</p>
57 <p>Поскольку &lt; div &gt; не несёт семантического значения, но является удобным контейнером, его часто используют в сочетании с CSS Flexbox и Grid Layout для создания адаптивных макетов.</p>
57 <p>Поскольку &lt; div &gt; не несёт семантического значения, но является удобным контейнером, его часто используют в сочетании с CSS Flexbox и Grid Layout для создания адаптивных макетов.</p>
58 <p>Тег &lt; div &gt; - полезный инструмент для группировки элементов, но неправильное его использование может привести к проблемам. Чрезмерная вложенность, отсутствие семантики или идентификаторов усложняют код, делают его менее читаемым и затрудняют поддержку.</p>
58 <p>Тег &lt; div &gt; - полезный инструмент для группировки элементов, но неправильное его использование может привести к проблемам. Чрезмерная вложенность, отсутствие семантики или идентификаторов усложняют код, делают его менее читаемым и затрудняют поддержку.</p>
59 <p>Вот типичные ошибки, которых стоит избегать:</p>
59 <p>Вот типичные ошибки, которых стоит избегать:</p>
60 <ul><li>Создание спагетти из &lt; div &gt;.</li>
60 <ul><li>Создание спагетти из &lt; div &gt;.</li>
61 </ul>&lt;!-- История плохого кода --&gt; &lt; div &gt; &lt; div &gt; &lt; div &gt; &lt; div &gt;Слишком много вложенных div&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;<p>Такой код трудно читать, а менять и поддерживать его ещё сложнее.</p>
61 </ul>&lt;!-- История плохого кода --&gt; &lt; div &gt; &lt; div &gt; &lt; div &gt; &lt; div &gt;Слишком много вложенных div&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;<p>Такой код трудно читать, а менять и поддерживать его ещё сложнее.</p>
62 <ul><li>Чрезмерное использование &lt; div &gt; вместо семантических блоков.</li>
62 <ul><li>Чрезмерное использование &lt; div &gt; вместо семантических блоков.</li>
63 </ul>&lt;!-- История плохого кода - 2--&gt; &lt; div &gt;Название&lt;/div&gt; &lt; div &gt;Заголовок&lt;/div&gt; &lt; div &gt;Основной контент&lt;/div&gt; &lt; div &gt;Подвал&lt;/div&gt; &lt; div &gt;Уже и сам не помню, что это за семантический блок, оставлю div...&lt;/div&gt;<p>Избыток &lt; div &gt; усложняет код, а также затрудняет дальнейшую стилизацию и ухудшает структуру страницы.</p>
63 </ul>&lt;!-- История плохого кода - 2--&gt; &lt; div &gt;Название&lt;/div&gt; &lt; div &gt;Заголовок&lt;/div&gt; &lt; div &gt;Основной контент&lt;/div&gt; &lt; div &gt;Подвал&lt;/div&gt; &lt; div &gt;Уже и сам не помню, что это за семантический блок, оставлю div...&lt;/div&gt;<p>Избыток &lt; div &gt; усложняет код, а также затрудняет дальнейшую стилизацию и ухудшает структуру страницы.</p>
64 <ul><li>Отсутствие классов и идентификаторов.</li>
64 <ul><li>Отсутствие классов и идентификаторов.</li>
65 </ul>&lt;!-- История плохого кода - 3--&gt; &lt; div &gt;Красное название&lt;/div&gt; &lt;!-- class? id? --&gt; &lt; div &gt; &lt;!-- class? id? --&gt; А тут красивый параграф &lt;/div&gt; &lt; div &gt; &lt;!-- class? id? --&gt; Ещё один блок с красивой границей вокруг &lt;/div&gt;<p>Без классов и идентификаторов работать с &lt; div &gt; в CSS и JavaScript сложнее. В большом объёме кода это затрудняет стилизацию, усложняет поиск нужных элементов и может привести к дублированию.</p>
65 </ul>&lt;!-- История плохого кода - 3--&gt; &lt; div &gt;Красное название&lt;/div&gt; &lt;!-- class? id? --&gt; &lt; div &gt; &lt;!-- class? id? --&gt; А тут красивый параграф &lt;/div&gt; &lt; div &gt; &lt;!-- class? id? --&gt; Ещё один блок с красивой границей вокруг &lt;/div&gt;<p>Без классов и идентификаторов работать с &lt; div &gt; в CSS и JavaScript сложнее. В большом объёме кода это затрудняет стилизацию, усложняет поиск нужных элементов и может привести к дублированию.</p>
66 <p>Сделаем два макета мини-маркетплейса. В первом создадим окно навигации, используя &lt; div &gt; и Flexbox, во втором - каталог товаров, оформленный с помощью Grid Layout.</p>
66 <p>Сделаем два макета мини-маркетплейса. В первом создадим окно навигации, используя &lt; div &gt; и Flexbox, во втором - каталог товаров, оформленный с помощью Grid Layout.</p>
67 <p>Семантические теги в этой практике использовать не будем; наша задача - показать, как разные технологии CSS работают с &lt; div &gt;.</p>
67 <p>Семантические теги в этой практике использовать не будем; наша задача - показать, как разные технологии CSS работают с &lt; div &gt;.</p>
68 <p>Сначала соберём главное окно маркетплейса с логотипом и псевдонавигацией. Для этого создадим файл index.html и добавим следующий код:</p>
68 <p>Сначала соберём главное окно маркетплейса с логотипом и псевдонавигацией. Для этого создадим файл index.html и добавим следующий код:</p>
69 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;title&gt;Skillbox Marketplace&lt;/title&gt; &lt;meta charset="UTF-8"&gt; &lt;!-- Подключаем стили CSS, которые будут добавлены далее --&gt; &lt;link rel="stylesheet" href="nav.css"&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- Логотип, первый контейнер --&gt; &lt;div class="logo"&gt; &lt;p&gt;Skillbox&lt;/p&gt; &lt;p&gt;Marketplace&lt;/p&gt; &lt;/div&gt; &lt;!-- Главное меню --&gt; &lt;!-- Да, это плохой код, но в рамках урока будем использовать контейнеры div --&gt; &lt;div class="main"&gt; &lt;div class="menu"&gt;Главная&lt;/div&gt; &lt;div class="menu"&gt;Личный кабинет&lt;/div&gt; &lt;div class="menu"&gt;О нас&lt;/div&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;<p>Здесь два основных контейнера &lt; div &gt;: один для логотипа, другой - для навигации, и внутри него тоже используются &lt; div &gt;. В браузере этот код отобразится следующим образом:</p>
69 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;title&gt;Skillbox Marketplace&lt;/title&gt; &lt;meta charset="UTF-8"&gt; &lt;!-- Подключаем стили CSS, которые будут добавлены далее --&gt; &lt;link rel="stylesheet" href="nav.css"&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- Логотип, первый контейнер --&gt; &lt;div class="logo"&gt; &lt;p&gt;Skillbox&lt;/p&gt; &lt;p&gt;Marketplace&lt;/p&gt; &lt;/div&gt; &lt;!-- Главное меню --&gt; &lt;!-- Да, это плохой код, но в рамках урока будем использовать контейнеры div --&gt; &lt;div class="main"&gt; &lt;div class="menu"&gt;Главная&lt;/div&gt; &lt;div class="menu"&gt;Личный кабинет&lt;/div&gt; &lt;div class="menu"&gt;О нас&lt;/div&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;<p>Здесь два основных контейнера &lt; div &gt;: один для логотипа, другой - для навигации, и внутри него тоже используются &lt; div &gt;. В браузере этот код отобразится следующим образом:</p>
70 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Теперь создаём файл nav.css в той же папке, где находится HTML-документ, и добавляем стили для всех контейнеров &lt; div &gt;:</p>
70 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Теперь создаём файл nav.css в той же папке, где находится HTML-документ, и добавляем стили для всех контейнеров &lt; div &gt;:</p>
71 body { margin: 0; /* Убираем отступы вокруг страницы */ background-color: #f0f0f0; /* Устанавливаем светло-серый цвет фона для страницы */ } /* Стилизуем div-контейнер логотипа */ .logo { font-family: 'Arial', sans-serif; /* Шрифт для логотипа */ font-size: 24px; /* Размер шрифта */ font-weight: bold; /* Жирное начертание */ color: #333; /* Цвет текста */ text-transform: uppercase; /* Преобразуем текст в верхний регистр */ letter-spacing: 2px; /* Пробел между буквами */ background-color: #ffffff; /* Белый фон логотипа */ padding: 10px 20px; /* Внутренние отступы вокруг текста */ } /* Стилизуем общую разметку всех div-элементов внутри контейнера main с помощью Flexbox*/ .main { display: flex; /* Включаем Flexbox */ justify-content: space-around; /* Равномерно распределяем элементы по горизонтали */ background-color: #333; /* Устанавливаем тёмно-серый цвет фона */ } /* Стилизуем текст div-элементов контейнеров menu */ .menu { color: white; /* Устанавливаем белый цвет текста для ссылок */ text-decoration: none; /* Убираем подчёркивание у ссылок */ }<p>Обратите внимание на свойство display в селекторе .main. По умолчанию у &lt;div&gt; значение display: block, из-за чего он занимает всю ширину экрана. В этом упражнении мы меняем его поведение, используя Flexbox.</p>
71 body { margin: 0; /* Убираем отступы вокруг страницы */ background-color: #f0f0f0; /* Устанавливаем светло-серый цвет фона для страницы */ } /* Стилизуем div-контейнер логотипа */ .logo { font-family: 'Arial', sans-serif; /* Шрифт для логотипа */ font-size: 24px; /* Размер шрифта */ font-weight: bold; /* Жирное начертание */ color: #333; /* Цвет текста */ text-transform: uppercase; /* Преобразуем текст в верхний регистр */ letter-spacing: 2px; /* Пробел между буквами */ background-color: #ffffff; /* Белый фон логотипа */ padding: 10px 20px; /* Внутренние отступы вокруг текста */ } /* Стилизуем общую разметку всех div-элементов внутри контейнера main с помощью Flexbox*/ .main { display: flex; /* Включаем Flexbox */ justify-content: space-around; /* Равномерно распределяем элементы по горизонтали */ background-color: #333; /* Устанавливаем тёмно-серый цвет фона */ } /* Стилизуем текст div-элементов контейнеров menu */ .menu { color: white; /* Устанавливаем белый цвет текста для ссылок */ text-decoration: none; /* Убираем подчёркивание у ссылок */ }<p>Обратите внимание на свойство display в селекторе .main. По умолчанию у &lt;div&gt; значение display: block, из-за чего он занимает всю ширину экрана. В этом упражнении мы меняем его поведение, используя Flexbox.</p>
72 <p>Такой метод позволяет выстраивать элементы как по вертикали, так и по горизонтали, делая разметку более гибкой. Вот результат стилизации контейнера &lt; div &gt; с помощью Flexbox:</p>
72 <p>Такой метод позволяет выстраивать элементы как по вертикали, так и по горизонтали, делая разметку более гибкой. Вот результат стилизации контейнера &lt; div &gt; с помощью Flexbox:</p>
73 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Теперь создаём каталог товаров. Для этого добавляем новый файл, например product.html, и вставляем следующий HTML-код:</p>
73 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Теперь создаём каталог товаров. Для этого добавляем новый файл, например product.html, и вставляем следующий HTML-код:</p>
74 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Skillbox Marketplace 2&lt;/title&gt; &lt;!-- Подключаем стили CSS, которые будут добавлены далее --&gt; &lt;link rel="stylesheet" href="product.css"&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- Родительский div-grid-контейнер --&gt; &lt;div class="grid-container"&gt; &lt;!-- Дочерние div-grid-контейнеры --&gt; &lt;!-- Первая карточка --&gt; &lt;div class="product"&gt; &lt;div class="img"&gt;Изображение 1&lt;/div&gt; &lt;h2&gt;Продукт 1&lt;/h2&gt; &lt;p&gt;Цена: 100 рублей&lt;/p&gt; &lt;/div&gt; &lt;!-- Вторая карточка --&gt; &lt;div class="product"&gt; &lt;div class="img"&gt;Изображение 2&lt;/div&gt; &lt;h2&gt;Продукт 2&lt;/h2&gt; &lt;p&gt;Цена: 200 рублей&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;<p>В этом коде есть родительский контейнер &lt; div &gt;, внутри которого находятся дочерние &lt; div &gt;. Каждый из них содержит одинаковую структуру: изображение (в примере это тоже &lt; div &gt;), название &lt;h2&gt; и цену &lt;p&gt;. Без CSS в браузере всё отобразится следующим образом:</p>
74 &lt;!DOCTYPE html&gt; &lt;html lang="ru"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Skillbox Marketplace 2&lt;/title&gt; &lt;!-- Подключаем стили CSS, которые будут добавлены далее --&gt; &lt;link rel="stylesheet" href="product.css"&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- Родительский div-grid-контейнер --&gt; &lt;div class="grid-container"&gt; &lt;!-- Дочерние div-grid-контейнеры --&gt; &lt;!-- Первая карточка --&gt; &lt;div class="product"&gt; &lt;div class="img"&gt;Изображение 1&lt;/div&gt; &lt;h2&gt;Продукт 1&lt;/h2&gt; &lt;p&gt;Цена: 100 рублей&lt;/p&gt; &lt;/div&gt; &lt;!-- Вторая карточка --&gt; &lt;div class="product"&gt; &lt;div class="img"&gt;Изображение 2&lt;/div&gt; &lt;h2&gt;Продукт 2&lt;/h2&gt; &lt;p&gt;Цена: 200 рублей&lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;<p>В этом коде есть родительский контейнер &lt; div &gt;, внутри которого находятся дочерние &lt; div &gt;. Каждый из них содержит одинаковую структуру: изображение (в примере это тоже &lt; div &gt;), название &lt;h2&gt; и цену &lt;p&gt;. Без CSS в браузере всё отобразится следующим образом:</p>
75 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Создаём файл product.css в той же папке, где находится HTML-документ. Затем добавляем в него код для подключения Grid Layout:</p>
75 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Создаём файл product.css в той же папке, где находится HTML-документ. Затем добавляем в него код для подключения Grid Layout:</p>
76 /* Подключаем Grid Layout и настраиваем его */ .grid-container { display: grid; /* Включаем Grid Layout */ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* Автоматическое заполнение колонок */ gap: 15px; /* Промежутки между элементами */ padding: 20px; /* Внутренние отступы вокруг текста */ max-width: 1000px; /* Максимальная ширина сетки */ margin: auto; /* Центрируем сетку на странице */ } /* Стилизуем общую карточку */ .product { background-color: white; /* Добавление фона */ border: 1px solid #ccc; /* Добавление рамки */ border-radius: 10px; /* Добавление округления рамки */ padding: 10px; /* Добавление отступов */ text-align: center; /* Центрируем текст внутри карточки */ } /* Стилизуем макет изображения */ .product .img { width: 100%; /* Изображение занимает всю ширину карточки */ border-radius: 10px; /* Закругление углов изображения */ background-color: yellow; /* Добавление жёлтого фона */ }<p>Такой подход позволяет размещать &lt; div &gt; как по вертикали, так и по горизонтали, обеспечивая удобное расположение элементов.</p>
76 /* Подключаем Grid Layout и настраиваем его */ .grid-container { display: grid; /* Включаем Grid Layout */ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); /* Автоматическое заполнение колонок */ gap: 15px; /* Промежутки между элементами */ padding: 20px; /* Внутренние отступы вокруг текста */ max-width: 1000px; /* Максимальная ширина сетки */ margin: auto; /* Центрируем сетку на странице */ } /* Стилизуем общую карточку */ .product { background-color: white; /* Добавление фона */ border: 1px solid #ccc; /* Добавление рамки */ border-radius: 10px; /* Добавление округления рамки */ padding: 10px; /* Добавление отступов */ text-align: center; /* Центрируем текст внутри карточки */ } /* Стилизуем макет изображения */ .product .img { width: 100%; /* Изображение занимает всю ширину карточки */ border-radius: 10px; /* Закругление углов изображения */ background-color: yellow; /* Добавление жёлтого фона */ }<p>Такой подход позволяет размещать &lt; div &gt; как по вертикали, так и по горизонтали, обеспечивая удобное расположение элементов.</p>
77 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Закрепим всё, что прошли. Ниже - домашка из четырёх небольших заданий, где вам предстоит собрать простую страницу с навигацией и каталогом товаров, постепенно усложняя структуру карточек и управляя расположением элементов. Это важно сделать перед тем, как перейти к более сложным макетам.</p>
77 <em>Скриншот: Google Chrome / Skillbox Media</em><p>Закрепим всё, что прошли. Ниже - домашка из четырёх небольших заданий, где вам предстоит собрать простую страницу с навигацией и каталогом товаров, постепенно усложняя структуру карточек и управляя расположением элементов. Это важно сделать перед тем, как перейти к более сложным макетам.</p>
78 <p>Объедините код двух предыдущих упражнений, добавив навигацию и каталог товаров. Это задание - мини-макет реального сайта, позволяющий закрепить навык работы с несколькими секциями на странице. Поможет вам лучше понять, как компоненты взаимодействуют между собой, как управлять их расположением с помощью Flexbox и Grid, и как собирать интерфейс из блоков.</p>
78 <p>Объедините код двух предыдущих упражнений, добавив навигацию и каталог товаров. Это задание - мини-макет реального сайта, позволяющий закрепить навык работы с несколькими секциями на странице. Поможет вам лучше понять, как компоненты взаимодействуют между собой, как управлять их расположением с помощью Flexbox и Grid, и как собирать интерфейс из блоков.</p>
79 <p>Измените направление контейнеров &lt; div &gt; в навигации на вертикальное. На практике это применяется, если навигация расположена сбоку - например, в боковой панели или мобильной версии сайта. Помогает компактно разместить пункты меню и упростить восприятие интерфейса.</p>
79 <p>Измените направление контейнеров &lt; div &gt; в навигации на вертикальное. На практике это применяется, если навигация расположена сбоку - например, в боковой панели или мобильной версии сайта. Помогает компактно разместить пункты меню и упростить восприятие интерфейса.</p>
80 <p>Добавьте внутри карточек новые &lt; div &gt; - например, для рейтинга товара или для кнопки "Добавить в корзину". Рейтинг, кнопки, подписи - типичные элементы интерфейса. Усложняя структуру, вы научитесь правильно организовывать разметку и управлять её отображением с помощью CSS.</p>
80 <p>Добавьте внутри карточек новые &lt; div &gt; - например, для рейтинга товара или для кнопки "Добавить в корзину". Рейтинг, кнопки, подписи - типичные элементы интерфейса. Усложняя структуру, вы научитесь правильно организовывать разметку и управлять её отображением с помощью CSS.</p>
81 <p>Создайте 9-10 дополнительных карточек и поэкспериментируйте с их расположением в Grid Layout. Когда карточек больше, становится видно, как адаптируется сетка: куда перетекают блоки, как они выстраиваются по строкам и колонкам. Такой эксперимент - простой способ освоиться с поведением сетки в реальных интерфейсах.</p>
81 <p>Создайте 9-10 дополнительных карточек и поэкспериментируйте с их расположением в Grid Layout. Когда карточек больше, становится видно, как адаптируется сетка: куда перетекают блоки, как они выстраиваются по строкам и колонкам. Такой эксперимент - простой способ освоиться с поведением сетки в реальных интерфейсах.</p>
82 <a>Курс с трудоустройством: "Профессия Фронтенд-разработчик + ИИ" Узнать о курсе</a>
82 <a>Курс с трудоустройством: "Профессия Фронтенд-разработчик + ИИ" Узнать о курсе</a>