Тег hgroup в HTML: заголовок вместе с подзаголовком

Тег hgroup объединяет заголовок и идущий рядом пояснительный текст в один блок - слоган, уточнение, подзаголовок. Тег парный, закрывающий обязателен, собственных атрибутов нет, только глобальные. В браузерах он доступен давно, с июля 2015 года, так что о поддержке беспокоиться не нужно.

HTML
<hgroup>
  <h1>Как выбрать велосипед</h1>
  <p>Руководство для новичка</p>
</hgroup>

Что находиться внутри hgroup

Здесь придётся быть внимательным, потому что русские справочники по этому тегу расходятся между собой, и расходятся не в мелочах.

По действующей спецификации внутри hgroup находится ровно один заголовок - любого уровня от h1 до h6 - и рядом с ним сколько угодно абзацев, до заголовка или после него. Никаких других элементов, и главное - никаких вторых заголовков.

А вот совет, который встречается в популярных справочниках до сих пор: «внутри располагаются заголовки от h1 до h6», иногда с примером, где внутри hgroup стоят h1 и h2 сразу. Это описание прежней версии стандарта, и следовать ему не стоит. Проще всего показать почему.

Пример: старый совет и актуальная разметка рядом

Результат

Метки показывают главное: в первом блоке два заголовка, во втором один. Обёртка hgroup на это никак не влияет.

В этом и суть. Тег hgroup не меняет уровни заголовков и не прячет их от структуры документа - он вообще ничего не делает с тем, что внутри. Поэтому от старого совета получается ровно та беда, от которой hgroup должен был избавить: подзаголовок остаётся полноценным заголовком второго уровня и объявляет раздел, которого на странице нет. Подробно эта ошибка разобрана на странице тега h2.

Мы проверили это в браузере: в первом варианте в структуру доступности попадают два заголовка, первого и второго уровня, во втором - только один, а абзац остаётся абзацем.

Нужен ли hgroup, если можно обойтись h1 и p

Вопрос напрашивается сам собой, а задают его редко. Если hgroup не влияет на структуру, то чем разметка с обёрткой отличается от простой пары - заголовок, а следом абзац?

Честный ответ: структурой - ничем. И там и там в документе один заголовок и один абзац, программа чтения с экрана в обоих случаях прочитает одно и то же. Приписывать тегу пользу, которой у него нет, смысла не имеет.

Разница в двух других вещах. Во-первых, hgroup получает роль группы, то есть явно сообщает, что заголовок и подпись - единое целое, а не просто соседи по разметке. Во-вторых - и на практике это важнее - обёртка даёт зацепку для стилей и скриптов: отступы между заголовком и подписью, общий фон шапки, выборка блока целиком.

Отсюда и правило применения. Обёртка оправдана, когда подпись действительно относится к заголовку и в отрыве от него смысла не имеет. Если же под заголовком идёт обычный вводный абзац, который просто оказался первым, hgroup не нужен - это не подзаголовок, а начало текста.

Частые ошибки

Почти все ошибки с этим тегом растут из одного корня - из устаревших описаний, которые до сих пор попадаются в справочниках.

ОшибкаЧто происходитКак исправить
Внутри hgroup два заголовкаПодзаголовок остаётся заголовком и объявляет несуществующий разделОставить один заголовок, подпись сделать абзацем
В hgroup завёрнут заголовок с вводным абзацемОбычный текст выдаётся за подзаголовокПрименять обёртку только для подписи к заголовку
Внутрь помещены div или списокРазметка невалидна, допустимы только заголовок и абзацыВынести лишние элементы наружу
От hgroup ждут изменения уровнейУровни остаются прежними, тег на них не влияетВыбирать уровень заголовка по месту в структуре
Категория
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×