Списки
Есть два вида списков и один корректно вложенный список.
Референс преподавателя · 70–90 минут
Основная цель урока — научить ученика выбирать HTML-структуру по смыслу данных. Flex и Grid идут как дополнительный визуальный слой, если основная практика усвоена.
Ученик самостоятельно создаёт список, семантически правильную таблицу и набор карточек. Он может объяснить, почему таблица подходит для сравнения, список — для однородных пунктов, а Flex/Grid отвечают за расположение элементов.
| Время | Блок | Что должен сделать ученик |
|---|---|---|
| 0–7 мин | Повторение HTML/CSS | Назвать роль HTML и CSS, вспомнить тег, атрибут, класс и селектор. |
| 7–22 мин | Списки | Собрать маркированный, нумерованный и вложенный список. |
| 22–42 мин | Таблицы | Разметить таблицу с заголовком, шапкой и телом. |
| 42–58 мин | Основная практика | Сделать «план ожидания игр» списком и таблицей. |
| 58–73 мин | Flex, если есть время | Разложить карточки игр в строку с переносом. |
| 73–88 мин | Grid, дополнительный блок | Сделать адаптивную сетку карточек. |
| 88–90 мин | Итог | Объяснить выбор структуры и показать результат. |
Вопросы: Чем отличается тег от элемента? Где пишутся атрибуты? Что выберет .game-card? Почему нельзя делать всю страницу из <div>?
<ul> используется, когда порядок пунктов не важен. <ol> — когда есть последовательность или рейтинг. Каждый пункт находится в <li>.
<h2>Игры, за которыми я слежу</h2>
<ul class="games">
<li>Standoff 2</li>
<li>Forza 6</li>
</ul>
<h2>Как проверить новость о релизе</h2>
<ol>
<li>Найти официальный источник</li>
<li>Проверить платформу</li>
<li>Проверить дату публикации</li>
</ol>
<ul>
<li>
Standoff 2
<ul>
<li>Жанр: шутер</li>
<li>Статус: ждём официальных новостей</li>
</ul>
</li>
</ul>
Обратить внимание: вложенный список располагается внутри соответствующего <li>. Маркеры лучше менять через CSS, а не вставлять символы вручную.
Таблица нужна для данных, которые сравниваются по одинаковым признакам. Она не предназначена для построения макета страницы.
<table>
<caption>Игры, новости о которых мы отслеживаем</caption>
<thead>
<tr>
<th scope="col">Игра</th>
<th scope="col">Жанр</th>
<th scope="col">Платформа</th>
<th scope="col">Статус</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Standoff 2</th>
<td>Шутер</td>
<td>PlayStation</td>
<td>Ждём официальных новостей</td>
</tr>
<tr>
<th scope="row">Forza 6</th>
<td>Гонки</td>
<td>PlayStation</td>
<td>Ждём официальных новостей</td>
</tr>
</tbody>
</table>
caption объясняет назначение таблицы.thead и tbody разделяют группы строк.tr — строка, th — заголовочная ячейка, td — обычная.scope связывает заголовок со строкой или столбцом для доступности.table {
width: 100%;
border-collapse: collapse;
}
th, td {
padding: 12px;
border: 1px solid #cbd5e1;
text-align: left;
}
thead {
background: #1d4ed8;
color: white;
}
tbody tr:nth-child(even) {
background: #eff6ff;
}
Flex удобен, когда элементы нужно расположить преимущественно вдоль одной оси. Карточки остаются обычным списком по смыслу, а Flex меняет только их расположение.
<ul class="game-cards">
<li class="game-card">
<span class="tag">Шутер</span>
<h3>Standoff 2</h3>
<p>Ждём официальных новостей о платформе и дате.</p>
</li>
<li class="game-card">
<span class="tag">Гонки</span>
<h3>Forza 6</h3>
<p>Ждём официальных новостей о платформе и дате.</p>
</li>
</ul>
.game-cards {
display: flex;
flex-wrap: wrap;
gap: 16px;
padding: 0;
list-style: none;
}
.game-card {
flex: 1 1 240px;
padding: 20px;
border: 1px solid #cbd5e1;
border-radius: 16px;
}
Grid удобен, когда важны одновременно строки и столбцы. Замена касается контейнера; HTML карточек остаётся тем же.
.game-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
padding: 0;
list-style: none;
}
Сравнение: во Flex размер и перенос диктуют сами элементы; в Grid контейнер явно задаёт сетку. Для простых карточек подходят оба варианта.
ul, а когда ol?li без родительского списка?th и td?caption и scope?flex-wrap?minmax(220px, 1fr)?Есть два вида списков и один корректно вложенный список.
Есть caption, thead, tbody, заголовки и минимум две строки данных.
Карточки адаптивно переносятся с Flex или Grid.
Важно: названия игр используются как близкая ученику тема. Не называйте вымышленные даты релиза фактом. Для реальной информации проверяйте официальные страницы издателей и PlayStation непосредственно перед уроком.