- Модуль 1: Основы HTML-разметки
- Модуль 2: Форматирование текста
- Жирный текст (b и strong).
- Курсив (i и em).
- Подчеркивание и перечеркивание (u, s, del, ins).
- Верхний и нижний индекс (sup, sub).
- Цитаты и блоки цитат (q, blockquote, cite).
- Код и предварительно форматированный текст (code, pre).
- Аббревиатуры и определения (abbr, dfn).
- Технические элементы (kbd, samp, var).
- Двунаправленный текст (bdi, bdo).
- Модуль 3: Ссылки и навигация
- Базовые ссылки (a href).
- Внутренние ссылки и якоря.
- Относительные и абсолютные пути.
- Атрибуты target (_blank, _self).
- Заголовки ссылок (title).
- Ссылки на email и телефон.
- Скачивание файлов через ссылки (download).
- Атрибуты rel (nofollow, noreferrer).
- Создание кнопок-ссылок.
- Hash-навигация между разделами.
- URI-схемы (sms:, geo:).
- Модуль 4: Изображения
- Добавление базовых изображений (img).
- Атрибуты изображений (alt, width, height).
- Изображения-ссылки.
- Карты изображений (map, area).
- Picture элемент и множественные источники.
- Адаптивные изображения (srcset, sizes).
- Ленивая загрузка изображений (loading='lazy').
- Форматы изображений и их применение (JPEG, PNG, WebP, SVG).
- SV-анимация через элемент.
- Интерактивные SVG-карты.
- Модуль 5: Списки
- Неупорядоченные списки (ul, li).
- Упорядоченные списки (ol, li) и их атрибуты.
- Типы нумерации (decimal, alpha, roman).
- Вложенные списки и иерархия.
- Списки определений (dl, dt, dd).
- Создание навигационного меню из списка.
- Кастомные маркеры и стилизация списков.
- Атрибуты start и reversed в OL.
- Горизонтальные списки через CSS.
- Модуль 6: Таблицы
- Базовая структура таблицы (table, tr, td).
- Заголовки таблиц (th) и атрибуты scope.
- Объединение строк и столбцов (rowspan, colspan).
- Группировка ячеек (thead, tbody, tfoot).
- Заголовок и подпись таблицы (caption).
- Группировка столбцов (colgroup, col).
- Стилизация таблиц и чередующиеся строки.
- Фиксированные заголовки таблиц.
- Модуль 7: Формы и элементы ввода
- Создание базовой формы (form).
- Атрибуты формы (action, method, enctype).
- Текстовые поля (input type='text').
- Поля ввода пароля (input type='password').
- Флажки и чекбоксы (input type='checkbox').
- Радиокнопки (input type='radio').
- Кнопки (button, input type='submit', input type='reset').
- Выпадающие списки (select, option, optgroup).
- Многострочные поля ввода (textarea).
- Группировка элементов формы (fieldset, legend).
- Подписи к полям (label).
- HTML5 типы полей ( url, number ).
- Поля выбора даты и времени (date, time).
- Слайдеры и диапазоны (input type='range').
- Выбор цвета (input type='color').
- Поля с автозаполнением (datalist).
- Атрибуты полей (placeholder, autocomplete).
- Валидация форм (required, pattern, min, max).
- Загрузка файлов (input type='file').
- Скрытые поля (input type='hidden').
- Элемент output для вычислений.
- Модуль 8: Семантические элементы HTML5
- Шапка сайта (header).
- Основная навигация (nav).
- Основной контент (main).
- Боковая панель (aside).
- Подвал сайта (footer).
- Статьи и самодостаточный контент (article).
- Тематические разделы (section).
- Фигуры и подписи (figure, figcaption).
- Время и даты (time).
- Разворачиваемые блоки (details, summary).
- Прогресс и метрики (progress, meter).
- Диалоговые окна (dialog).
- Когда использовать div, а когда семантические элементы.
- Модуль 9: Аудио и видео
- Модуль 10: Метаданные и head
- Структура head элемента.
- Задание заголовка страницы (title).
- Кодировка и язык документа (meta charset, lang).
- Мета-описание и ключевые слова.
- Настройка viewport для мобильных устройств.
- Добавление favicon.
- Подключение внешних CSS (link rel='stylesheet').
- Подключение скриптов (script).
- Open Graph метаданные для соц.сетей.
- Метатеги для SEO и индексации.
- Предварительная загрузка ресурсов (preload, prefetch).
- PWA манифест и метатеги.
- Модуль 11: Фреймы и встраивание контента
- Модуль 12: SVG и Canvas
- Модуль 13: HTML и доступность
- Модуль 14: HTML для адаптивного веба
- Модуль 15: Практические проекты
Создание первой статьи
Перед вами блок с новостью. Сейчас он обернут в обычный `<div>`. Ваша задача — заменить `div` на более подходящий семантический тег, который предназначен для независимых блоков контента, таких как новостные статьи.
body {
background-color: #f0f2f5;
font-family: sans-serif;
}
.news-item {
background-color: #fff;
border: 1px solid #ddd;
border-radius: 8px;
padding: 16px;
margin: 10px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.news-item h2 {
margin-top: 0;
font-size: 1.2em;
color: #1d2129;
}
.news-item p {
color: #606770;
}
<input1 class="news-item">
<h2>Новый рекорд в скорости обработки данных</h2>
<p>Ученые объявили о прорыве в квантовых вычислениях, что может кардинально изменить мир технологий.</p>
</input1>
Разметка нескольких статей
Теперь у нас есть лента, состоящая из двух постов. Каждый пост является независимой единицей контента. Примените правильный семантический тег для каждого из этих постов.
body {
background-color: #f0f2f5;
font-family: sans-serif;
}
.post {
background-color: #fff;
border: 1px solid #ddd;
border-radius: 8px;
padding: 16px;
margin: 10px;
}
.post h2 {
margin: 0 0 10px 0;
font-size: 1.1em;
}
.post p {
margin: 0;
}
<!-- Первый пост -->
<input1 class="post">
<h2>Советы по изучению JavaScript</h2>
<p>Начинайте с основ, практикуйтесь каждый день и не бойтесь делать ошибки. Это ключ к успеху.</p>
</input1>
<!-- Второй пост -->
<input2 class="post">
<h2>Обзор нового фреймворка</h2>
<p>Вышел новый UI фреймворк, который обещает высокую производительность и легкость в использовании.</p>
</input2>
Статья с шапкой и подвалом
Хорошая статья часто имеет шапку (заголовок, автор, дата) и подвал (теги, категории). Добавьте соответствующие семантические теги для шапки и подвала внутри статьи.
Добавление даты публикации
Дата и время — важная информация для статьи. Используйте семантический тег `<time>` для разметки даты публикации. Также добавьте атрибут, который содержит дату в машиночитаемом формате.
body { font-family: sans-serif; }
article {
border: 1px solid #ccc;
padding: 15px;
margin: 10px;
}
.meta-info {
color: gray;
font-size: 0.9em;
}
<article>
<h2>Исследование космоса</h2>
<p>Новые данные с телескопа "Джеймс Уэбб"...</p>
<div class="meta-info">
Опубликовано: <input1 input2="2023-10-26">26 октября 2023</input1>
</div>
</article>
Вложенные статьи: комментарии
Комментарии к посту в блоге сами по себе являются самодостаточными единицами контента. Ваша задача — разметить каждый комментарий как вложенную статью внутри основной статьи.
body { font-family: sans-serif; }
.main-post {
background: #fff;
border: 1px solid #ccc;
padding: 15px;
margin-bottom: 20px;
}
.comments-section {
margin-left: 20px;
}
.comment {
background: #f9f9f9;
border: 1px solid #eee;
padding: 10px;
margin-top: 10px;
}
.comment p { margin: 5px 0 0 0; }
<article class="main-post">
<h2>Мое путешествие на Алтай</h2>
<p>Горы были восхитительны...</p>
<section class="comments-section">
<h3>Комментарии:</h3>
<input1 class="comment">
<h4>Мария</h4>
<p>Отличный рассказ! Тоже хочу туда поехать.</p>
</input1>
<input2 class="comment">
<h4>Иван</h4>
<p>Спасибо за фотографии, очень красиво!</p>
</input2>
</section>
</article>
Различие между <article> и <section>
Часто путают теги `<article>` и `<section>`. В этом задании у вас есть одна большая статья (руководство), которая разделена на логические части: введение, основная часть и заключение. Используйте правильный тег для группировки этих частей внутри статьи.
body { font-family: sans-serif; }
article {
border: 1px solid #007bff;
padding: 15px;
background: #f8f9fa;
}
section {
border-left: 3px solid #17a2b8;
padding-left: 15px;
margin-top: 20px;
}
h1, h2 { color: #333; }
<article>
<h1>Полное руководство по CSS Grid</h1>
<p>Это руководство поможет вам освоить все тонкости CSS Grid Layout.</p>
<input1>
<h2>Введение в Grid</h2>
<p>CSS Grid - это двумерная система сеток...</p>
</input1>
<input2>
<h2>Основные свойства</h2>
<p>Рассмотрим такие свойства как grid-template-columns, grid-template-rows...</p>
</input2>
</article>
Карточка товара как статья
Карточка товара на странице каталога является самодостаточным блоком информации. Её можно скопировать на другую страницу или в email-рассылку, и она не потеряет своего смысла. Преобразуйте `div` карточки товара в семантически верный элемент.
body { font-family: sans-serif; background: #f4f4f4; }
.product-card {
width: 250px;
border: 1px solid #ddd;
background: #fff;
padding: 15px;
margin: 15px auto;
text-align: center;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.product-card img {
max-width: 100%;
height: auto;
margin-bottom: 10px;
}
.product-card .price {
font-weight: bold;
color: #28a745;
font-size: 1.2em;
}
<input1 class="product-card">
<img src="https://naytikurs.ru/img/7.png" alt="Смарт-часы">
<h3>Смарт-часы "Pulse"</h3>
<p class="price">15 000 руб.</p>
<button>В корзину</button>
</input1>