Смысловая разметка и заголовки
Зачем:Вы замените безликие блоки и таблицы элементами, которые что-то значат для поисковиков, программ чтения с экрана и для вас самих через год. После урока вы строите страницу из header, nav, main, article, section и footer и расставляете заголовки по порядку.
25 минут
Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.
Смысловая разметка — элементы header, nav, main, article, section и footer, которые называют части страницы, и заголовки h1–h6, идущие по порядку уровней.
Разметка со смыслом
В прошлом уроке вы собрали страницу из таблицы. Для глаз она выглядела как сайт, а для программы это были ячейки: ни заголовка, ни меню, ни главной части. А кроме глаз у страницы есть ещё читатели.
- Программа чтения с экрана. Незрячий человек слушает страницу. Хорошая программа умеет перечислить области (шапка, меню, основное, подвал) и заголовки, и человек прыгает между ними, а не слушает всё подряд. По опросам WebAIM пользователи таких программ чаще всего начинают поиск нужного именно с заголовков.
- Поисковик. Ему важно знать, что на странице главное, а что повторяется на каждой.
- Режим чтения и переводчик в браузере вытаскивают из страницы основной текст, если она размечена по смыслу.
- Вы сами. Открыв файл через год, вы быстрее поймёте
<nav>, чем<div class="m2">.
Смысл записывают элементами. Они ничего не красят и не двигают: красить будет CSS. Они только называют, чем является кусок страницы.
Основные элементы
<header>это шапка страницы или раздела: название, логотип, меню.<nav>это навигация: основное меню или другой блок ссылок по сайту. Его принято делать списком: меню это перечень пунктов.<main>это основное содержимое страницы. Он один: это то, ради чего пришли.<section>: раздел со своим заголовком.<article>это самостоятельный фрагмент, который понятен и вне страницы: карточка услуги, пост, отзыв.<aside>это дополнение к основному: контакты, врезка, связанные ссылки.<footer>это подвал: адрес, права, второстепенные ссылки.
А где смысла нет, остаётся <div>: «коробка без значения». Он нужен, например, чтобы сгруппировать куски для раскладки. Плохо не то, что div существует, а когда им заменяют элементы со смыслом.
Элементам можно дать имя через атрибут class: <article class="card">. В HTML он ничего не значит, зато по нему CSS потом найдёт нужные элементы. Мы пользуемся им в этом курсе, чтобы страница была готова к стилям.
Проверьте себя: сколько main на странице и почему?
Один: это основное содержимое, ради которого пришли. Второй main запутал бы программу, которая ищет, где «главное».
Что видит программа
Эта схема показывает страницу так, как её разбирает программа: список областей и оглавление из заголовков. Попробуйте оба примера и поправьте разметку: удалите main, смените h2 на h4, добавьте второй h1. Схема подскажет, что стало хуже.
Ни одного ориентира. Диктор может только читать всё подряд сверху вниз.
Ни одного заголовка. По странице нельзя перемещаться по разделам.
Проверьте себя: что увидит программа в странице целиком из div?
Ничего: ни областей, ни заголовков. Только плоский текст, который приходится читать подряд.
Оглавление из заголовков
Заголовки от h1 до h6 работают как оглавление. У них есть простые правила:
- Один
h1на странице: он говорит, о чём она. - Разделы получают
h2. Внутри раздела подразделы получаютh3, и так вглубь. - Уровни идут по порядку. После
h2не прыгают наh4: у оглавления была бы дыра. - Уровень выбирают по месту в структуре, а не по размеру букв. Если
h3слишком мелкий, это забота CSS, а не повод поставитьh2.
Был соблазн упростить: говорили, что в HTML5 можно ставить h1 в каждом section, и браузер сам вычислит уровень. Задумывался так называемый «алгоритм структуры документа», но ни один браузер и ни одна программа чтения с экрана его не поддержали, и в 2022 году его описание убрали из спецификации. Поэтому уровни расставляют вручную.
А что насчёт <b> и <i>? Для смысла есть <strong> (важно) и <em> (интонационный акцент). Теги b и i остались, но означают просто «выделено, как будто полужирным» и «курсивом» без важности. Выбирайте по смыслу.
Проверьте себя: можно ли поставить h4 сразу после h2?
Нет: пропущен уровень, и оглавление получает дыру. После h2 идёт h3.
Что делали в 2005-м, а что делаем сейчас
В 2005 году смысловых элементов ещё не было: их придумали в HTML5, который стал рекомендацией только в 2014-м. Движение за веб-стандарты, которое началось раньше (Джеффри Зелдман, книга «Designing with Web Standards», 2003), требовало отделять смысл от вида. Структуру тогда писали из div с понятными именами: <div id="header">, <div id="nav">, <div id="content">. Это была попытка выразить смысл тем, что было под рукой.
Мы пишем страницу эпохи 2005 года современными элементами. Идея та же, что тогда, только язык богаче. Это честный приём: в курсе мы повторяем эпохи по подходу, но не заставляем вас писать хуже, чем можно.
Практика
Перед вами страница в духе 2005 года: сетка из таблицы и подписи через font. Перепишите её по смыслу. Все ваши данные уже в странице: название, разделы, услуги и контакты. Вам надо переложить их в смысловые элементы и дописать пару предложений о каждом разделе вместо многоточий.
Эта версия пойдёт в эпоху 2005 года вашей машины времени, и дальше в этой эпохе вы будете её наращивать: ссылки, картинки, таблицу, а в части про CSS и оформление.
Что было не так с 2005 годом
Страницы уже разделяли на структуру и вид, но структуру писали из безымянных div, и программы по-прежнему не знали, где шапка, а где главное. Не хватало и нескольких крупных вещей: сайты почти не умели подстраиваться под экран, а доступность оставалась делом добровольным. Всё это придёт в следующих эпохах.
Практика
Готовлю вашу страницу…
Тест
Вопрос 1 из 6
Карточки
Эти карточки попадут в повторение, когда вы завершите урок.
Зачем смысловые элементы вместо div?
Ответ
Они говорят программам, что есть что: поисковикам, чтению с экрана, режиму чтения. И вам самим через год. Вид к смыслу отношения не имеет.
Перечислите основные смысловые элементы страницы
Ответ
header (шапка), nav (меню), main (основное, один), section (раздел с заголовком), article (самостоятельный фрагмент), aside (дополнение), footer (подвал).
Как расставлять заголовки?
Ответ
Один h1 на страницу, внутри разделов h2, внутри них h3, без пропуска уровней. Уровень зависит от места в структуре, а не от размера букв.
Когда уместен div?
Ответ
Когда подходящего смыслового элемента нет, а группировать надо, например для раскладки. Нельзя заменять им элементы со смыслом.
Что такое атрибут class?
Ответ
Имя, по которому CSS находит элемент. В HTML он ничего не значит, а в стилях пригодится: article class="card".
Источники
- Document and website structure (MDN) CC BY-SA, по-английски
- Headings and paragraphs (MDN) CC BY-SA, по-английски
- HTML Living Standard: Sections (WHATWG) CC BY, по-английски
- Learn HTML: Semantic HTML (web.dev) CC BY, по-английски
- Семантика в HTML — Дока только ссылка, по-русски
Дальше
Теперь вы знаете: смысловые элементы: header, nav, main, article, section, footer, заголовки и структура документа.