- Модуль 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: Практические проекты
Создание простого поля для загрузки
Давайте начнем с основ. Ваша задача — создать стандартное поле для загрузки файлов. В HTML для этого используется тег <input>, но с определенным значением атрибута type. Допишите недостающую часть кода, чтобы на экране появилась кнопка для выбора файла.
body {
padding: 15px;
font-family: sans-serif;
}
form {
display: flex;
flex-direction: column;
align-items: flex-start;
}
<form>
<label for="file-upload">Выберите файл:</label>
<input type="input1" id="file-upload">
</form>
Связь метки и поля ввода
Хорошей практикой является связывание текстовой метки (<label>) с полем ввода. Это улучшает доступность и позволяет пользователю нажимать на текст для активации поля. Свяжите метку с полем ввода, используя атрибуты `for` и `id`.
body {
padding: 15px;
font-family: sans-serif;
}
form {
display: flex;
flex-direction: column;
align-items: flex-start;
}
<form>
<label input1="avatar-upload">Загрузить аватар:</label>
<input type="file" input2="avatar-upload">
</form>
Имя поля для отправки на сервер
Когда форма отправляется на сервер, каждое поле должно иметь уникальное имя, чтобы сервер мог понять, какие данные откуда пришли. Добавьте полю для загрузки файла атрибут `name` со значением `user_photo`.
body {
padding: 15px;
font-family: sans-serif;
}
form {
display: flex;
flex-direction: column;
align-items: flex-start;
}
<form action="#" method="post">
<label for="photo">Ваше фото:</label>
<input type="file" id="photo" input1="user_photo">
</form>
Выбор нескольких файлов
По умолчанию поле для загрузки позволяет выбрать только один файл. Чтобы разрешить пользователю выбирать несколько файлов одновременно (например, зажав Ctrl или Shift), нужно добавить специальный атрибут. Добавьте его в код.
body {
padding: 15px;
font-family: sans-serif;
}
form {
display: flex;
flex-direction: column;
align-items: flex-start;
}
<form>
<label for="gallery">Загрузите фото для галереи:</label>
<input type="file" id="gallery" name="images" input1>
</form>
Ограничение типов файлов: только изображения
Часто требуется ограничить типы файлов, которые пользователь может загрузить. Например, для аватара нужны только изображения. Используйте атрибут `accept`, чтобы разрешить выбор файлов любого типа изображений.
body {
padding: 15px;
font-family: sans-serif;
}
form {
display: flex;
flex-direction: column;
align-items: flex-start;
}
<form>
<label for="avatar">Аватар (только изображения):</label>
<input type="file" id="avatar" name="avatar" accept="input1">
</form>
Ограничение по конкретным расширениям
Помимо общих типов, можно указывать и конкретные расширения файлов. Ваша задача — сделать так, чтобы поле для загрузки принимало только файлы форматов PDF и Microsoft Word (.docx).
body {
padding: 15px;
font-family: sans-serif;
}
form {
display: flex;
flex-direction: column;
align-items: flex-start;
}
<form>
<label for="document">Загрузите документ (PDF или DOCX):</label>
<input type="file" id="document" name="doc" accept="input1, .docx">
</form>
Стилизация кнопки загрузки
Стандартный вид <input type="file"> сложно изменить. Распространенный прием — скрыть сам input и стилизовать связанный с ним <label> как кнопку. В CSS уже все готово. Ваша задача — правильно связать стилизованную метку со скрытым полем ввода.
body { padding: 15px; font-family: sans-serif; }
.hidden-input {
display: none;
}
.custom-file-upload {
border: 1px solid #ccc;
display: inline-block;
padding: 6px 12px;
cursor: pointer;
background-color: #f0f0f0;
border-radius: 4px;
}
.custom-file-upload:hover {
background-color: #e0e0e0;
}
<form>
<label input1="styled-upload" class="custom-file-upload">
📂 Выбрать файл
</label>
<input class="hidden-input" id="styled-upload" type="input2" name="custom-file">
</form>
Обязательное поле для загрузки
Иногда загрузка файла является обязательным действием для отправки формы. Чтобы браузер не позволил отправить форму, пока файл не выбран, нужно добавить полю ввода специальный атрибут.
body { padding: 15px; font-family: sans-serif; }
form { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
button { padding: 8px 15px; }
<form>
<label for="contract">Подписанный договор:</label>
<input type="file" id="contract" name="contract" input1>
<button type="submit">Отправить</button>
</form>