- Модуль 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: Практические проекты
Создание диалогового окна
Начнем с основ. Создайте простейшее диалоговое окно с текстом внутри. На этом этапе оно не будет видно на странице, но его структура уже будет присутствовать в коде и будет доступна для дальнейших манипуляций.
body {
font-family: sans-serif;
padding: 20px;
}
dialog {
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
padding: 20px;
min-width: 250px;
}
<input1>
<p>Это содержимое диалогового окна.</p>
</input1>
Видимый диалог
По умолчанию диалоговые окна скрыты. Чтобы сделать диалоговое окно видимым сразу при загрузке страницы, необходимо добавить к тегу `<dialog>` специальный атрибут.
body {
font-family: sans-serif;
padding: 20px;
}
dialog {
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
padding: 20px;
min-width: 250px;
}
<dialog input1>
<p>Это диалоговое окно видно по умолчанию.</p>
</dialog>
Закрытие диалога с помощью формы
Диалоговые окна можно закрывать без JavaScript, используя стандартное поведение форм. Создайте внутри диалога форму и задайте ей специальный метод, чтобы кнопка внутри неё закрывала диалоговое окно.
body {
font-family: sans-serif;
padding: 20px;
}
dialog {
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
padding: 20px;
min-width: 250px;
}
form {
margin-top: 15px;
text-align: right;
}
button {
padding: 8px 16px;
border: 1px solid #6c757d;
background-color: #6c757d;
color: white;
border-radius: 5px;
cursor: pointer;
}
<dialog open>
<p>Чтобы закрыть это окно, нажмите на кнопку.</p>
<input1 method="input2">
<button>Закрыть</button>
</input1>
</dialog>
Открытие модального окна
Модальные окна блокируют взаимодействие с остальной страницей, акцентируя внимание пользователя. Чтобы открыть диалог в модальном режиме, нужно использовать JavaScript. Добавьте `id` к диалогу и вызовите правильный JS-метод в атрибуте `onclick` кнопки.
body {
font-family: sans-serif;
padding: 20px;
}
dialog {
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
padding: 20px;
width: 90%;
max-width: 320px;
}
dialog::backdrop {
background-color: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(2px);
}
button {
padding: 8px 16px;
border: 1px solid #007bff;
background-color: #007bff;
color: white;
border-radius: 5px;
cursor: pointer;
}
<button onclick="document.getElementById('confirmDialog').input1()">
Показать модальное окно
</button>
<dialog input2="confirmDialog">
<h3>Подтверждение</h3>
<p>Вы уверены, что хотите продолжить?</p>
<form method="dialog">
<button>Да, уверен</button>
</form>
</dialog>
Структурирование контента
Для лучшей семантики и доступности содержимое диалогового окна можно и нужно структурировать. Используйте теги `<header>` и `<footer>`, чтобы семантически отделить заголовок и блок с кнопками от основного контента.
body {
font-family: sans-serif;
padding: 20px;
}
dialog {
border: 1px solid #ccc;
border-radius: 8px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
padding: 0;
width: 90%;
max-width: 320px;
}
header {
padding: 15px 20px;
border-bottom: 1px solid #eee;
}
header h2 {
margin: 0;
}
div.content {
padding: 15px 20px;
}
footer {
padding: 15px 20px;
background-color: #f9f9f9;
border-top: 1px solid #eee;
display: flex;
gap: 10px;
justify-content: flex-end;
}
button {
padding: 8px 16px;
border-radius: 5px;
cursor: pointer;
}
button[value="cancel"] {
background-color: transparent;
border: 1px solid #ccc;
color: #333;
}
button[value="default"] {
background-color: #dc3545;
border: 1px solid #dc3545;
color: white;
}
<dialog open>
<input1>
<h2>Удаление аккаунта</h2>
</input1>
<div class="content">
<p>Это действие необратимо. Все ваши данные будут удалены.</p>
</div>
<input2>
<form method="dialog">
<button value="cancel">Отмена</button>
<button value="default">Удалить</button>
</form>
</input2>
</dialog>
Передача значения при закрытии
Когда диалог закрывается через форму, кнопка, по которой кликнули, может передать свое значение. Это позволяет JavaScript определить, какое действие выбрал пользователь. Добавьте кнопкам атрибут для передачи значения.
body {
font-family: sans-serif;
display: flex;
justify-content: center;
align-items: flex-start;
padding-top: 20px;
}
dialog {
border: 1px solid #ccc;
border-radius: 8px;
padding: 20px;
text-align: center;
}
form button {
margin: 0 5px;
padding: 8px 16px;
border: 1px solid #007bff;
background-color: #007bff;
color: white;
border-radius: 5px;
cursor: pointer;
}
<dialog open>
<form method="dialog">
<p>Вы согласны с условиями?</p>
<button input1="decline">Отклонить</button>
<button input1="agree">Согласиться</button>
</form>
</dialog>
Комплексное модальное окно
Соберем все вместе! Создайте полноценное модальное окно с формой настроек. Вам нужно добавить тег диалога, правильно оформить его подвал с кнопками и настроить кнопку для его модального открытия.
body {
font-family: sans-serif;
}
dialog {
border: 1px solid #ccc;
border-radius: 8px;
padding: 0;
width: 90%;
max-width: 320px;
}
dialog::backdrop {
background-color: rgba(0, 0, 0, 0.5);
}
header {
padding: 15px 20px;
border-bottom: 1px solid #eee;
}
form {
padding: 15px 20px;
}
footer {
padding: 15px 20px;
background-color: #f9f9f9;
border-top: 1px solid #eee;
display: flex;
gap: 10px;
justify-content: flex-end;
}
label, input, select {
display: block;
width: 100%;
margin-bottom: 10px;
box-sizing: border-box;
}
input, select {
padding: 8px;
}
button {
padding: 8px 16px;
border-radius: 5px;
cursor: pointer;
}
<button onclick="settingsDialog.input3()">Настройки</button>
<input1 id="settingsDialog">
<header>
<h3>Настройки профиля</h3>
</header>
<form method="dialog">
<label for="nickname">Ваш ник:</label>
<input type="text" id="nickname" value="User123">
<label for="theme">Тема:</label>
<select id="theme">
<option>Светлая</option>
<option>Темная</option>
</select>
<input2>
<button value="cancel">Отмена</button>
<button value="save">Сохранить</button>
</input2>
</form>
</input1>