Учебник HTML для начинающих
HTML — это язык, на котором написана каждая страница в интернете. С него начинается путь любого веб-разработчика. В этом курсе вы с нуля научитесь создавать настоящие веб-страницы: размечать текст и заголовки, добавлять ссылки и изображения, строить таблицы и формы, а в конце — собирать осмысленную структуру страницы с помощью семантических тегов.
Никакого предварительного опыта не нужно. Всё объясняется на живых примерах разметки, которые вы можете повторить в обычном текстовом редакторе и открыть в браузере. К концу курса вы будете уверенно читать и писать HTML и будете готовы перейти к CSS и JavaScript.
Курс «HTML» состоит из 10 разделов и 41 урока: Введение в HTML, Текст и его оформление, Ссылки и изображения, Таблицы, Формы и ввод данных, Семантика и структура страницы, HTML5: мультимедиа и графика, Доступность (accessibility), Формы вглубь: типы и валидация и head, метаданные и SEO. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Введение в HTML
- Что такое HTML и как работает веб
Что такое HTML простыми словами, как браузер превращает разметку в страницу и зачем нужны теги. Первый шаг в веб-разработке.
- Структура HTML-документа
Скелет HTML-страницы: doctype, html, head и body. Разбираем, за что отвечает каждая часть документа и как они связаны.
- Теги, элементы и атрибуты
Разбираемся в трёх ключевых понятиях HTML: что такое тег, чем он отличается от элемента и зачем нужны атрибуты.
- Первый HTML-файл
Пошагово создаём первый HTML-файл, сохраняем с расширением .html и открываем в браузере. Практика с нуля.
- Что такое HTML и как работает веб
2 Текст и его оформление
- Заголовки h1–h6
Шесть уровней заголовков в HTML: как ими пользоваться, зачем нужна иерархия и почему h1 должен быть один.
- Абзацы и переносы
Абзацы тегом p, перенос строки br и горизонтальная линия hr. Почему пустые строки в коде не разбивают текст на абзацы.
- Форматирование текста
Выделение текста в HTML: strong, em, mark, small. В чём смысл каждого тега и почему важна семантика, а не только вид.
- Списки
Маркированные ul, нумерованные ol и списки определений dl. Как строить вложенные списки и когда какой выбрать.
- Цитаты и код
Как оформлять цитаты тегом blockquote и показывать код тегами code и pre. Разница между инлайн-кодом и блоком кода.
- Заголовки h1–h6
3 Ссылки и изображения
- Ссылки
Тег a и атрибут href: как делать ссылки на сайты, якоря на странице, почту и телефон. Открытие в новой вкладке через target.
- Изображения
Тег img и его атрибуты: src, alt, width и height. Зачем обязательно писать alt и как задавать размеры картинки.
- Пути: абсолютные и относительные
Абсолютные и относительные пути в HTML. Как ссылаться на файлы в соседних папках с помощью ./ и ../
- Favicon — иконка вкладки
Что такое favicon, как добавить иконку сайта в head через тег link и какие форматы подходят. Маленькая деталь с большим эффектом.
- Ссылки
4 Таблицы
- Структура таблицы
Из чего состоит HTML-таблица: table, tr, th и td. Строим первую таблицу с заголовками столбцов и ячейками данных.
- Заголовок и тело таблицы
Группировка таблицы: thead, tbody и tfoot, а также подпись caption. Зачем разделять шапку и тело таблицы.
- Объединение ячеек
Атрибуты colspan и rowspan: как объединить ячейки таблицы по горизонтали и вертикали. Разбираем на примерах.
- Когда таблицы уместны
Таблицы нужны для табличных данных, а не для вёрстки страницы. Разбираем, почему верстать макет таблицами — плохая идея.
- Структура таблицы
5 Формы и ввод данных
- Форма и её отправка
Тег form и его атрибуты action и method. Как устроена отправка данных формы на сервер методами GET и POST.
- Поля ввода и их типы
Тег input и его типы: text, email, password, number, checkbox, radio, date. Как тип поля меняет поведение и проверку.
- Label и доступность
Тег label связывает подпись с полем ввода через for и id. Зачем это нужно для удобства и доступности форм.
- Select, textarea и валидация
Выпадающий список select, многострочное поле textarea, кнопки button и базовая проверка форм: required, placeholder, pattern.
- Форма и её отправка
6 Семантика и структура страницы
- Семантические теги
Семантические теги HTML5: header, nav, main, section, article, aside, footer. Как они задают осмысленную структуру страницы.
- Зачем нужна семантика
Почему семантическая разметка важна: доступность для незрячих, SEO и читаемость кода. Реальная польза семантических тегов.
- Атрибуты id и class
Атрибуты id и class в HTML: чем они отличаются, как их используют для связи со стилями CSS и скриптами. Блочные и строчные элементы.
- Мета-теги в head
Мета-теги в head: charset, viewport и description. Зачем они нужны для кодировки, мобильных устройств и поисковой выдачи.
- Семантические теги
7 HTML5: мультимедиа и графика
- Аудио и видео: тег video и audio
Теги video и audio в HTML5: controls, autoplay, muted, loop, poster, несколько source (mp4/webm), субтитры через track и доступность медиа.
- Адаптивные изображения: picture, srcset, sizes
Адаптивные картинки в HTML: srcset по плотности и ширине, атрибут sizes, picture+source для art direction, loading=lazy и форматы WebP/AVIF.
- SVG в HTML: векторная графика
SVG в HTML: inline-вставка против img, фигуры rect/circle/path, роль viewBox, стилизация фигур через CSS и доступность через title и role.
- Встраивание: iframe и его безопасность
Iframe в HTML: встраивание карт и видео, изоляция через sandbox, разрешения allow, loading=lazy, защита от clickjacking, кратко embed и object.
- Аудио и видео: тег video и audio
8 Доступность (accessibility)
- Зачем доступность и как ей помогает семантика
Кто пользуется скринридерами, почему важны alt и структура заголовков, нативные элементы вместо div и базовые принципы WCAG простыми словами.
- ARIA: роли, состояния, свойства
Когда ARIA нужна и когда не нужна (первое правило ARIA), атрибуты role, aria-label и labelledby, aria-expanded и hidden, live-регионы для динамики.
- Навигация с клавиатуры и фокус
Tab-порядок и фокус, tabindex 0 и -1 и почему не положительный, видимый фокус-индикатор, пропуск-ссылка skip link и ловушки фокуса в модальных окнах.
- Доступные формы
label и for, обёртка label, fieldset и legend для групп радиокнопок, обязательные поля, сообщения об ошибках через aria-describedby и атрибут autocomplete.
- Зачем доступность и как ей помогает семантика
9 Формы вглубь: типы и валидация
- Типы input: email, date, range, color и другие
Типы поля input: number, email, url, tel, date, time, range, color, search. Какие мобильные клавиатуры вызывают, атрибуты min/max/step и плюсы нативных виджетов.
- Встроенная валидация форм
Встроенная валидация HTML-форм: required, pattern с regex, minlength/maxlength, min/max, type=email, псевдоклассы :valid/:invalid, novalidate и setCustomValidity.
- UX форм: datalist, autocomplete, подсказки
UX HTML-форм: datalist для автодополнения, токены autocomplete, почему placeholder не заменяет label, accept для файлов, inputmode и многошаговые формы.
- Отправка формы: method, action, FormData
Отправка HTML-форм: GET против POST, action, enctype multipart для файлов, пары name=value, объект FormData в JavaScript и кнопки submit/reset/button.
- Типы input: email, date, range, color и другие
10 head, метаданные и SEO
- Содержимое head: meta, charset, viewport
Что класть в head HTML-документа: charset utf-8, viewport для мобильных, meta description, lang у html, title и base. Зачем важен порядок тегов.
- Open Graph и превью в соцсетях
Как сделать красивую ссылку-превью в соцсетях: теги og:title, og:description, og:image, og:url, og:type и Twitter Cards. Размер картинки и отладка превью.
- Структурированные данные: schema.org и JSON-LD
Зачем поисковику структурированные данные: разметка schema.org, JSON-LD в script application/ld+json, типы Article, Product, FAQ, rich snippets и микроразметка.
- Загрузка и производительность
Как ускорить страницу через head: defer и async у script, preload, prefetch, preconnect, favicon и манифест PWA, lazy-loading картинок и влияние на SEO.
- Содержимое head: meta, charset, viewport