01
Разбираем по шагам
Не нужно запоминать все теги сразу. Берём одну задачу, смотрим короткий фрагмент и сразу проверяем, что он создаёт в браузере.
1. Из чего состоит веб-страница
Откройте любую страницу Knowledge-Studio. Вы видите название, меню, блоки с информацией и контакты. HTML описывает, какие элементы есть на странице и как они связаны. Пока не думаем о цветах и оформлении — сначала собираем само содержимое.
Фрагмент страницы Knowledge-Studio
<header>
<h1>Knowledge-Studio</h1>
</header>
<main>
<h2>Наши курсы</h2>
<p>Практические занятия по веб-разработке.</p>
</main>
Такой текст браузер отобразит на странице
Какой фрагмент отвечает за содержимое, которое посетитель видит на странице: head или body?
Показать ответ
Ответ: body. В нём находится видимое содержимое документа.
2. Каркас HTML-документа
Каждая HTML-страница начинается с одинакового каркаса. В head хранятся настройки документа и название вкладки. В body — то, что отображается внутри страницы.
Минимальный каркас HTML5
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Курсы Knowledge-Studio</title>
</head>
<body>
<h1>Курсы веб-разработки</h1>
<p>Учимся создавать сайты.</p>
</body>
</html>
Что появится внутри страницы
Пять строк, которые важно запомнить:
<!DOCTYPE html> включает современный режим HTML.
html lang="ru" указывает язык документа.
meta charset="UTF-8" помогает правильно показывать русские символы.
title задаёт название вкладки.
viewport задаёт браузеру ширину просмотра по ширине устройства; сам по себе он ещё не делает страницу адаптивной.
Где будет отображаться текст Курсы Knowledge-Studio из элемента title?
Показать ответ
Ответ: В названии вкладки браузера. Это не заголовок внутри самой страницы.
3. Теги, элементы и атрибуты
Посмотрим на ссылку «Программа курсов». Запись в угловых скобках — это тег. Весь фрагмент вместе с текстом — элемент. Дополнительные настройки внутри открывающего тега называются атрибутами.
Ссылка на программу курсов
<a href="program.html" class="program-link">
Программа курсов
</a>
Так выглядит ссылка в браузере
href сообщает браузеру, куда перейти. class — имя-метка, которую мы присвоили элементу. Значения атрибутов записаны в кавычках.
Есть пустые элементы без закрывающего тега и вложенного содержимого. Например, img показывает изображение, а meta хранит настройки документа.
В записи <a href="program.html"> что является атрибутом?
Показать ответ
Ответ: href. Значение атрибута — program.html.
4. Зачем нужны семантические теги и чем отличается div
Можно собрать шапку сайта из обычного div. Браузер покажет её содержимое — и визуально она может выглядеть точно так же. Но сам div не сообщает, что эта часть страницы является навигацией.
Обычная группа и область навигации
<!-- Нейтральная группа -->
<div>
<a href="#courses">Курсы</a>
<a href="#contacts">Контакты</a>
</div>
<!-- Семантическая навигация -->
<nav>
<a href="#courses">Курсы</a>
<a href="#contacts">Контакты</a>
</nav>
Содержимое обоих фрагментов выглядит одинаково
Внешне разницы почти нет. Но nav сообщает браузеру и вспомогательным технологиям: «это область навигации». Поэтому по смыслу здесь лучше использовать nav. div не плохой и не запрещённый — это нейтральная группа, когда специального смыслового тега не требуется.
Три элемента, которые часто встречаются вместе
Раздел курсов и отдельные материалы
<main>
<section>
<h2>Наши курсы</h2>
<article>
<h3>Открытое занятие</h3>
<p>Познакомьтесь с веб-разработкой.</p>
</article>
<div>
<p>Формат: для начинающих</p>
<p>Продолжительность: 60 минут</p>
</div>
</section>
</main>
Как браузер покажет содержимое
section объединяет тематическую часть страницы — здесь «Наши курсы». article обозначает самостоятельный материал — здесь анонс занятия. div группирует две строки с деталями: у самой группы нет отдельной роли вроде навигации или самостоятельной публикации.
Также часто встречаются header — шапка страницы или раздела, main — основное содержимое, footer — завершающая часть. aside используют для дополнительной информации, связанной с основным содержимым.
Для блока с основными ссылками «Курсы» и «Контакты» какой тег точнее: div или nav?
Показать ответ
Ответ: nav, потому что это именно область навигации. div сработает, но не обозначит её назначение.
5. Заголовки и обычный текст
На странице курса есть название всей страницы, заголовок раздела и название отдельного курса. Для них используют разные уровни заголовков. Выбирайте уровень по структуре, а не по тому, какой текст выглядит крупнее.
Иерархия заголовков
<h1>Knowledge-Studio</h1>
<section>
<h2>Наши курсы</h2>
<article>
<h3>Основы HTML</h3>
<p>Учимся размечать веб-страницы.</p>
<p><strong>Старт:</strong> для начинающих.</p>
</article>
</section>
Текст и уровни заголовков в браузере
h1 — главная тема страницы. h2 — раздел внутри неё. h3 — подраздел или материал внутри раздела. Для обычных абзацев используйте p. strong отмечает важность фрагмента, em — смысловое ударение.
Какой заголовок выбрать для названия отдельного курса внутри раздела «Наши курсы», если название страницы уже оформлено через h1, а раздел — через h2?
Показать ответ
Ответ: h3 — он будет следующим уровнем внутри этого раздела.
6. Вложенность элементов
Карточка курса состоит из заголовка и описания. Оба элемента находятся внутри самой карточки. Значит, карточка — родитель, а заголовок и абзац — её непосредственные дети.
Структура одной карточки
<main>
<article>
<h2>Курс CSS</h2>
<p>12 занятий с практикой.</p>
</article>
</main>
Содержимое вложенных элементов
main — родитель для article. article — непосредственный ребёнок main. Заголовок и абзац — дети article. Любой элемент внутри предка, даже через несколько уровней, называется его потомком.
Если внутри article находится div, а внутри него — p, кто является непосредственным родителем абзаца?
Показать ответ
Ответ: div. При этом p также остаётся потомком article.
7. Для чего нужны class и id
На странице несколько карточек курсов. Нам нужно пометить их одинаковым признаком, чтобы в следующем уроке можно было выбрать все такие элементы одним CSS-правилом. Для этого используют class.
Один класс повторяется у нескольких карточек
<section id="courses">
<h2>Наши курсы</h2>
<article class="course-card">
<h3>HTML</h3>
<p>Структура страницы.</p>
</article>
<article class="course-card">
<h3>CSS</h3>
<p>Внешний вид страницы.</p>
</article>
</section>
<a href="#courses">Перейти к курсам</a>
Две карточки и ссылка на раздел
Обе карточки получили одинаковый class="course-card". Класс может повторяться на странице. Позже CSS сможет выбрать обе карточки по этой метке.
id — уникальное имя конкретного элемента. В примере id="courses" задаёт имя разделу, а ссылка href="#courses" ведёт к нему. Один и тот же id не следует повторять у разных элементов одной страницы.
У элемента может быть несколько классов: их записывают через пробел, например class="course-card featured". Это две отдельные метки, а не одно имя.
Что использовать для двух одинаковых карточек: один общий class или одинаковый id?
Показать ответ
Ответ: Один общий class. ID должен быть уникальным.
8. Ссылки, изображения и пути к файлам
Ссылка нужна, чтобы перейти на страницу или к разделу. Изображение нужно, чтобы показать картинку. Это разные задачи, поэтому используются разные элементы.
Ссылка на раздел и логотип проекта
<a href="#contacts">Перейти к контактам</a>
<img src="../../assets/logo.png"
alt="Логотип Knowledge-Studio">
<footer id="contacts">
Контакты Knowledge-Studio
</footer>
Так браузер отобразит ссылку и изображение
href задаёт адрес перехода. src указывает путь к изображению. alt содержит короткое описание картинки: оно пригодится, если изображение не загрузится или если страницу читает скринридер.
Путь считается относительно HTML-файла. Если рядом с index.html есть папка assets, а в ней logo.png, укажите src="assets/logo.png". Для перехода к папке уровнем выше используют ../.
В проекте open-class/index.html логотип лежит в open-class/assets/logo.png. Какой путь указать в src?
Показать ответ
Ответ: assets/logo.png, потому что папка assets находится рядом с index.html.
9. Элементы формы, которые понадобятся в CSS
Перед оформлением формы важно узнавать её HTML-элементы. form объединяет поля и кнопки. label даёт полю понятную подпись. Атрибут for у label должен совпадать с id поля. input создаёт поле ввода или переключатель, а button — кнопку.
HTML · простая форма
<form>
<label for="email">Электронная почта</label>
<input id="email" type="email">
<label>
<input type="checkbox">
Согласен с условиями
</label>
<button type="submit">Отправить</button>
<button type="button" disabled>Пока недоступно</button>
</form>
type="email" сообщает браузеру, что поле предназначено для адреса электронной почты.type="checkbox" создаёт флажок, который можно отметить.disabled отключает поле или кнопку.type="submit" обозначает кнопку отправки формы, а type="button" — обычную кнопку без автоматической отправки.
Важно: сейчас мы только узнаём HTML-структуру. CSS сможет оформить поля, флажки и кнопки. Проверку данных, обработку отправки и изменение страницы будем изучать в JavaScript. Сам по себе этот пример никуда данные не отправляет.
Как связать подпись «Электронная почта» с полем ввода?
Показать ответ
Укажите у label атрибут for="email", а у input — id="email".