- Модуль 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: Практические проекты
Создание первой якорной ссылки
Давайте создадим базовую внутреннюю ссылку. На странице есть заголовок и ссылка. Ваша задача — связать их так, чтобы при нажатии на 'Перейти к главе 1' страница прокручивалась к заголовку 'Глава 1'.
body {
font-family: sans-serif;
padding: 15px;
}
.content {
margin-top: 500px; /* Имитируем длинную страницу для скролла */
}
h2 {
background-color: #f0f0f0;
padding: 10px;
border-left: 4px solid #007bff;
}
<!-- Навигация -->
<a href="input1">Перейти к главе 1</a>
<!-- Контент страницы -->
<div class="content">
<h2 id="input2">Глава 1: Начало</h2>
<p>Это текст первой главы.</p>
</div>
Указываем правильные атрибуты
Теперь наоборот. HTML-структура уже содержит нужные значения для ссылки и якоря, но пропущены сами названия атрибутов. Укажите правильные атрибуты, чтобы навигация заработала.
body {
font-family: sans-serif;
padding: 15px;
}
.description-block {
margin-top: 400px;
}
.description-block:target {
background-color: #fff8e1;
border: 1px solid #ffc107;
padding: 10px;
border-radius: 5px;
}
<p>Ознакомьтесь с описанием ниже.</p>
<a input1="#description">Показать описание</a>
<div class="description-block" input2="description">
<h3>Подробное описание</h3>
<p>Этот блок должен подсвечиваться при переходе по ссылке.</p>
</div>
Оглавление для статьи
Создайте простое оглавление для небольшой статьи. Вам нужно связать каждую ссылку из списка с соответствующим заголовком. При нажатии на пункт оглавления, страница должна плавно перемещаться к нужному разделу.
html {
scroll-behavior: smooth; /* Для плавной прокрутки */
}
body {
font-family: sans-serif;
line-height: 1.6;
padding: 10px;
}
.toc {
list-style: none;
padding: 0;
margin-bottom: 20px;
border: 1px solid #ddd;
padding: 15px;
background-color: #f9f9f9;
}
.toc li a {
text-decoration: none;
color: #0056b3;
}
section {
margin-bottom: 20px;
padding-top: 20px; /* Чтобы заголовок не прилипал к верху */
}
<h2>Оглавление</h2>
<ul class="toc">
<li><a href="input1">Введение</a></li>
<li><a href="input2">Основная часть</a></li>
<li><a href="#conclusion">Заключение</a></li>
</ul>
<section id="input3">
<h3>Введение</h3>
<p>Текст введения... тут много текста для создания высоты страницы.</p>
<p>Еще немного текста...</p>
</section>
<section id="input4">
<h3>Основная часть</h3>
<p>Текст основной части... тут тоже много текста для создания высоты страницы.</p>
<p>И еще...</p>
</section>
<section id="conclusion">
<h3>Заключение</h3>
<p>Текст заключения.</p>
</section>
Ссылка-кнопка «Наверх»
Очень частая задача — создать кнопку или ссылку, которая возвращает пользователя в начало страницы. Установите якорь в самом верху страницы и создайте ссылку внизу, которая будет на него указывать.
body {
font-family: sans-serif;
}
.page-wrapper {
padding: 15px;
}
.content {
height: 800px; /* Имитация длинного контента */
background-color: #f0f4f8;
border: 1px solid #ccc;
margin-bottom: 20px;
}
.footer {
text-align: center;
}
.back-to-top {
display: inline-block;
padding: 10px 15px;
background-color: #007bff;
color: white;
text-decoration: none;
border-radius: 5px;
}
<div class="page-wrapper" id="input1">
<h1>Заголовок страницы</h1>
<p>Прокрутите вниз, чтобы увидеть ссылку.</p>
<div class="content">
<p>Длинный контент...</p>
</div>
<footer class="footer">
<a class="back-to-top" href="input2">Наверх</a>
</footer>
</div>
Якорь на изображение
Якорь можно поставить на любой элемент, не только на заголовок. В этом задании создайте ссылку, которая будет прокручивать страницу к определенному изображению в галерее.
body {
font-family: sans-serif;
padding: 10px;
}
.gallery {
margin-top: 30px;
}
.gallery img {
max-width: 100%;
display: block;
margin: 20px 0;
}
img:target {
outline: 3px solid #ff9800;
outline-offset: 4px;
}
<p>Нажмите, чтобы перейти к фото с автомобилем.</p>
<a href="input1">Перейти к фото</a>
<div class="gallery">
<p>Начало галереи...</p>
<img src="https://naytikurs.ru/img/1.png" alt="Фото 1">
<p>Промежуточный текст...</p>
<img src="https://naytikurs.ru/img/2.png" alt="Фото 2" input2="car-photo">
<p>Конец галереи.</p>
</div>
Создание полного тега ссылки
В этом задании вам нужно самостоятельно написать открывающий и закрывающий теги для ссылки. Сделайте так, чтобы текст 'Подробнее о доставке' стал ссылкой, ведущей к соответствующему разделу.
body {
font-family: sans-serif;
padding: 10px;
}
.intro {
background: #eef;
padding: 15px;
border-radius: 5px;
}
.delivery-section {
margin-top: 500px;
}
.delivery-section:target {
animation: highlight 1.5s ease;
}
@keyframes highlight {
from { background-color: #fdd835; }
to { background-color: transparent; }
}
<div class="intro">
<p>У нас есть быстрая доставка по всему городу. <input1 href="#delivery">Подробнее о доставке</input1>.</p>
</div>
<div id="delivery" class="delivery-section">
<h3>Условия доставки</h3>
<p>Мы доставляем товары в течение 24 часов.</p>
</div>
Навигация по вкладкам (Tab-панель)
Якоря можно использовать для имитации работы вкладок (табов) без JavaScript. Создайте навигацию, при клике на которую будет 'показываться' нужный блок контента. CSS уже настроен так, чтобы при переходе по якорю нужный блок становился видимым.
body {
font-family: sans-serif;
padding: 10px;
}
.tabs-nav {
display: flex;
border-bottom: 2px solid #ccc;
}
.tabs-nav a {
padding: 10px 15px;
text-decoration: none;
color: #333;
background: #eee;
border: 1px solid #ccc;
border-bottom: none;
margin-right: 5px;
}
.tab-content {
display: none; /* Все вкладки по умолчанию скрыты */
padding: 20px;
border: 1px solid #ccc;
border-top: none;
}
.tab-content:target {
display: block; /* Показываем только ту, на которую ведет якорь */
}
<div class="tabs">
<nav class="tabs-nav">
<a href="input1">Профиль</a>
<a href="#settings">Настройки</a>
<a href="input2">Помощь</a>
</nav>
<div class="tabs-container">
<div id="input3" class="tab-content">
<h4>Профиль пользователя</h4>
<p>Здесь информация о вашем профиле.</p>
</div>
<div id="settings" class="tab-content">
<h4>Настройки аккаунта</h4>
<p>Здесь можно изменить пароль.</p>
</div>
<div id="help" class="tab-content">
<h4>Раздел помощи</h4>
<p>Часто задаваемые вопросы.</p>
</div>
</div>
</div>