- Модуль 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: Практические проекты
Основа для карты: тег SVG
Создайте контейнер для будущей векторной карты. Внутри этого контейнера уже есть несколько регионов в виде тегов <path>, но без родительского тега SVG они не будут отображаться как единое графическое изображение.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
transition: fill 0.3s ease;
}
<input1 viewBox="0 0 300 200" class="map-container">
<!-- Регион Альфа -->
<path class="region region-alpha" d="M50,10 L150,10 L140,90 L60,90 Z"></path>
<!-- Регион Бета -->
<path class="region region-beta" d="M160,10 L250,10 L240,90 L170,90 Z"></path>
<!-- Регион Гамма -->
<path class="region region-gamma" d="M55,100 L245,100 L200,180 L100,180 Z"></path>
</input1>
Раскрашиваем регион
Карта выглядит однообразно. Давайте выделим "Регион Альфа", применив к нему специальный CSS-класс, который уже подготовлен в стилях. Найдите нужный регион и добавьте ему атрибут для присвоения класса `active`.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
}
.active {
fill: #ffc107;
}
<svg viewBox="0 0 300 200" class="map-container">
<!-- Регион Альфа -->
<path input1="region region-alpha active" d="M50,10 L150,10 L140,90 L60,90 Z"></path>
<!-- Регион Бета -->
<path class="region region-beta" d="M160,10 L250,10 L240,90 L170,90 Z"></path>
<!-- Регион Гамма -->
<path class="region region-gamma" d="M55,100 L245,100 L200,180 L100,180 Z"></path>
</svg>
Всплывающая подсказка для региона
Сделаем карту более информативной. При наведении курсора на "Регион Бета" должна появляться стандартная браузерная подсказка с его названием. Добавьте для этого необходимый дочерний элемент внутрь тега `<path>`.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
transition: fill 0.3s ease;
cursor: pointer;
}
.region:hover {
fill: #00bcd4;
}
<svg viewBox="0 0 300 200" class="map-container">
<path class="region region-alpha" d="M50,10 L150,10 L140,90 L60,90 Z"></path>
<path class="region region-beta" d="M160,10 L250,10 L240,90 L170,90 Z">
<input1>Это регион Бета</input1>
</path>
<path class="region region-gamma" d="M55,100 L245,100 L200,180 L100,180 Z"></path>
</svg>
Превращаем регион в ссылку
Сделайте "Регион Гамма" кликабельным. При нажатии на него пользователь должен переходить на другую страницу. Для этого оберните соответствующий `<path>` в тег, который используется для создания ссылок.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
transition: fill 0.3s ease;
cursor: pointer;
}
.region:hover {
fill: #00bcd4;
}
<svg viewBox="0 0 300 200" class="map-container">
<path class="region region-alpha" d="M50,10 L150,10 L140,90 L60,90 Z"></path>
<path class="region region-beta" d="M160,10 L250,10 L240,90 L170,90 Z">
<title>Это регион Бета</title>
</path>
<input1 href="https://naytikurs.ru" target="_blank">
<path class="region region-gamma" d="M55,100 L245,100 L200,180 L100,180 Z"></path>
</input1>
</svg>
Указываем адрес для ссылки
Вы сделали регион ссылкой, но не указали, куда она должна вести. Добавьте в тег `<a>` атрибут, который отвечает за URL-адрес. Нужный адрес уже подставлен в значение.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
transition: fill 0.3s ease;
cursor: pointer;
}
.region:hover {
fill: #00bcd4;
}
<svg viewBox="0 0 300 200" class="map-container">
<path class="region region-alpha" d="M50,10 L150,10 L140,90 L60,90 Z"></path>
<path class="region region-beta" d="M160,10 L250,10 L240,90 L170,90 Z">
<title>Это регион Бета</title>
</path>
<a input1="https://naytikurs.ru" target="_blank">
<path class="region region-gamma" d="M55,100 L245,100 L200,180 L100,180 Z"></path>
</a>
</svg>
Группировка регионов
Объединим регионы "Альфа" и "Бета" в одну логическую группу "Северные территории". Это позволит в будущем применять к ним общие стили или трансформации. Оберните два соответствующих тега `<path>` в группирующий тег.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
transition: opacity 0.3s ease;
cursor: pointer;
}
/* Стиль для всей группы при наведении */
.northern-territories:hover .region {
opacity: 0.6;
}
<svg viewBox="0 0 300 200" class="map-container">
<input1 class="northern-territories">
<!-- Регион Альфа -->
<path class="region region-alpha" d="M50,10 L150,10 L140,90 L60,90 Z"></path>
<!-- Регион Бета -->
<path class="region region-beta" d="M160,10 L250,10 L240,90 L170,90 Z"></path>
</input1>
<a href="https://naytikurs.ru" target="_blank">
<path class="region region-gamma" d="M55,100 L245,100 L200,180 L100,180 Z"></path>
</a>
</svg>
Добавление текстовых меток
Карта почти готова, но не хватает подписей. Добавьте текстовую метку для "Региона Гамма". Используйте тег для создания текста и укажите его координаты `x` и `y`, чтобы разместить его по центру региона.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
cursor: pointer;
}
.label {
font-family: Arial, sans-serif;
font-size: 16px;
fill: #333;
text-anchor: middle;
pointer-events: none; /* Чтобы текст не мешал кликам по региону */
}
<svg viewBox="0 0 300 200" class="map-container">
<g>
<path class="region" d="M50,10 L150,10 L140,90 L60,90 Z"></path>
<path class="region" d="M160,10 L250,10 L240,90 L170,90 Z"></path>
</g>
<path class="region region-gamma" d="M55,100 L245,100 L200,180 L100,180 Z"></path>
<!-- Метка для Региона Гамма -->
<input1 input2="150" input3="145" class="label">Гамма</input1>
</svg>
Управление обводкой
Сделаем обводку регионов более выразительной при наведении. В CSS уже есть нужный стиль. Ваша задача — добавить в HTML к "Региону Альфа" атрибуты, которые изначально задают цвет и толщину его обводки.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
transition: all 0.3s ease;
cursor: pointer;
}
.region:hover {
fill: #00bcd4;
stroke: #00796b;
stroke-width: 2px;
}
<svg viewBox="0 0 300 200" class="map-container">
<!-- Регион Альфа с измененной обводкой -->
<path class="region region-alpha"
d="M50,10 L150,10 L140,90 L60,90 Z"
input1="#ff5722"
input2="3"></path>
<path class="region region-beta" d="M160,10 L250,10 L240,90 L170,90 Z"></path>
</svg>
Клонирование фигуры с помощью <use>
Представьте, что нам нужен еще один такой же регион, как "Альфа", но в другом месте. Чтобы не копировать сложный код <path>, можно его переиспользовать. Сначала задайте `id` для фигуры, а затем создайте ее копию с помощью тега <use>.
.map-container {
width: 100%;
max-width: 350px;
border: 1px solid #ccc;
}
.region {
fill: #e0e0e0;
stroke: #666;
stroke-width: 1px;
}
<svg viewBox="0 0 300 200" class="map-container">
<defs>
<!-- Определяем фигуру один раз -->
<path input1="alpha-shape" class="region" d="M10,10 L110,10 L100,90 L20,90 Z"></path>
</defs>
<!-- Используем фигуру -->
<input2 input3="#alpha-shape"></input2>
<!-- Используем ее еще раз со смещением и другим цветом -->
<use href="#alpha-shape" x="120" fill="#a5d6a7"></use>
</svg>