Тег figcaption в HTML: подпись к иллюстрации

Тег <figcaption> задаёт подпись к иллюстрации - той, что обёрнута тегом figure. Вне его он не применяется: это единственный допустимый родитель. Тег парный, собственных атрибутов у него нет.

Что такое тег figcaption

Подпись под графиком "Рис. 1. Рост посещаемости за год" - это и есть <figcaption>. Она нужна затем, чтобы на иллюстрацию можно было сослаться из текста и чтобы читатель понимал, что именно перед ним изображено.

Работает тег только в паре с <figure>. Подпись к картинке, которая не обёрнута этим тегом, размечают обычным <p> - <figcaption> в другом месте будет ошибкой разметки.

HTML
<figure>
  <img src="grafik.png" alt="Столбчатый график посещаемости">
  <figcaption>Рис. 1. Рост посещаемости за год</figcaption>
</figure>

Внутри подписи допустим обычный текст и любые строчные теги: ссылка на источник, выделение, <cite> с автором фотографии.

Где находится подпись и сколько её может быть

Правил два, и оба жёсткие. Подпись должна быть первым или последним потомком <figure> - в середину блока, между двумя изображениями, её прописать нельзя. И подпись в блоке допускается только одна.

Встречается утверждение, будто подпись можно разместить где угодно внутри блока и будто количество ничем не ограничено. Это неверно: валидатор W3C отметит и то, и другое.

Оба варианта валидны
<figure>
  <figcaption>Подпись первым потомком</figcaption>
  <img src="foto.jpg" alt="Описание">
</figure>
 
<figure>
  <img src="foto.jpg" alt="Описание">
  <figcaption>Подпись последним потомком</figcaption>
</figure>

Пример: подпись сверху и подпись снизу

Результат

figcaption первым

Рис. 1. Посещаемость

figcaption последним

Рис. 1. Посещаемость

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

Подпись и атрибут alt: в чём разница

Эти две вещи путают постоянно, и от путаницы страдает как раз тот, ради кого всё затевалось. Разница простая: alt отвечает на вопрос "что изображено", подпись - на вопрос "что это за иллюстрация и зачем она здесь".

alt не виден на экране и предназначен тем, кто изображение не видит: скринридеру или браузеру, если картинка не загрузилась. Подпись видна всем и читается как часть статьи.

Тексты различаются по смыслу
<figure>
  <img src="grafik.png"
       alt="Столбчатая диаграмма: с января по август около 2000
            посещений в месяц, с сентября рост до 6000">
  <figcaption>Рис. 1. Рост посещаемости после переделки главной</figcaption>
</figure>

Дублировать одну фразу в оба места не нужно: скринридер зачитает её дважды подряд. И подпись не отменяет alt - если атрибут пропустить, изображение останется без описания, сколько бы подписей ни стояло рядом.

Даёт ли подпись название блоку

Вопрос выглядит простым, но ответ на него за последние годы менялся, и справочники разошлись. Английская версия MDN пишет, что подпись даёт блоку <figure> доступное название. Русская версия той же страницы утверждает обратное.

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

Практический вывод из этого один и он не зависит от того, чем закончится спор. На подпись как на название блока полагаться не стоит. Если блоку действительно нужно название - например, чтобы отличать несколько иллюстраций в списке ориентиров - его задают явно атрибутом aria-label или aria-labelledby. А обычной иллюстрации в статье название блока не требуется вовсе: ей хватает подписи и alt у картинки.

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

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

ОшибкаЧто происходитКак исправить
<figcaption> прописан вне <figure> Валидатор W3C выдаёт ошибку: другого родителя у тега нет Обернуть иллюстрацию в <figure> или заменить подпись на <p>
Подпись прописана в середине блока Та же ошибка валидации: место только первое или последнее Перенести подпись в начало или в конец
В одном блоке несколько подписей Учитывается только первая, остальные в разметке лишние Свести текст в одну подпись
Текст подписи дословно повторяет alt Скринридер зачитывает одну и ту же фразу дважды подряд В alt описать изображение, в подписи назвать иллюстрацию
Категория
Поделиться в социальных сетях

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

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

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

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

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