Кратко
СкопированоТеги <dl>
, <dt>
и <dd>
используются для вёрстки списка описаний («dl» означает «description list»).
У тега <dl>
есть встроенная роль list
, у <dt>
— term
, а у <dd>
— definition
.
Пример
Скопировано<p>Животные героев «Гарри Поттера»</p><dl> <dt>Букля</dt> <dd>Полярная сова Гарри Поттера</dd> <dt>Живоглот</dt> <dd>Полукот Гермионы Грейнджер</dd> <dt>Пушистик</dt> <dd>Кролик Лаванды Браун</dd> <dt>Нагайна</dt> <dd>Змея Волан-де-Морта</dd></dl>
<p>Животные героев «Гарри Поттера»</p> <dl> <dt>Букля</dt> <dd>Полярная сова Гарри Поттера</dd> <dt>Живоглот</dt> <dd>Полукот Гермионы Грейнджер</dd> <dt>Пушистик</dt> <dd>Кролик Лаванды Браун</dd> <dt>Нагайна</dt> <dd>Змея Волан-де-Морта</dd> </dl>
Как понять
СкопированоИногда требуется сверстать не просто перечень элементов, а список терминов и их определений, либо просто список пар «ключ-значение». Семантически верно будет такие перечни верстать при помощи тегов <dl>
, <dt>
, <dd>
.
Элемент <dl>
аналогично элементам <ul>
и <ol>
является внешней обёрткой для элементов списка.
Элемент <dt>
используется для вёрстки термина либо ключа в паре «ключ-значение». Как правило, следом за ним идёт либо ещё один тег <dt>
(если есть необходимость сверстать несколько терминов с одним определением), либо тег <dd>
.
Тегом <dd>
верстается определение термина, либо значение в паре «ключ-значение». Следом за этим тегом может идти как ещё один тег <dd>
(если у термина несколько определений), так и тег <dt>
(следующий термин).
Примеры написания
СкопированоКлассический вариант. Один термин — одно определение:
<dl> <dt>Blink</dt> <dd>Движок в браузерах Chrome, Edge, Opera</dd> <dt>Gecko</dt> <dd>Движок в браузере Firefox</dd> <dt>WebKit</dt> <dd>Движок в браузере Apple Safari</dd></dl>
<dl> <dt>Blink</dt> <dd>Движок в браузерах Chrome, Edge, Opera</dd> <dt>Gecko</dt> <dd>Движок в браузере Firefox</dd> <dt>WebKit</dt> <dd>Движок в браузере Apple Safari</dd> </dl>
Несколько терминов с общим определением:
<dl> <dt>Firefox</dt> <dt>Mozilla Firefox</dt> <dt>FF</dt> <dd> Свободный браузер на движке Gecko, разработкой и распространением которого занимается Mozilla Corporation. </dd></dl>
<dl> <dt>Firefox</dt> <dt>Mozilla Firefox</dt> <dt>FF</dt> <dd> Свободный браузер на движке Gecko, разработкой и распространением которого занимается Mozilla Corporation. </dd> </dl>
Термин с несколькими определениями:
<dl> <dt>Chrome</dt> <dd>Браузер, разрабатываемый компанией Google, вышел в 2008 году.</dd> <dd>Элемент 6-й группы 4-го периода периодической системы.</dd></dl>
<dl> <dt>Chrome</dt> <dd>Браузер, разрабатываемый компанией Google, вышел в 2008 году.</dd> <dd>Элемент 6-й группы 4-го периода периодической системы.</dd> </dl>
Отображение метаданных (пар «ключ-значение»):
<dl> <dt>Имя</dt> <dd>Гарри Джеймс Поттер</dd> <dt>День рождения</dt> <dd>31 июля 1980 года</dd> <dt>Телосложение</dt> <dd>худощавый, невысокого роста</dd> <dt>Особые приметы</dt> <dd>Носит круглые очки; шрам в виде молнии на лбу.</dd></dl>
<dl> <dt>Имя</dt> <dd>Гарри Джеймс Поттер</dd> <dt>День рождения</dt> <dd>31 июля 1980 года</dd> <dt>Телосложение</dt> <dd>худощавый, невысокого роста</dd> <dt>Особые приметы</dt> <dd>Носит круглые очки; шрам в виде молнии на лбу.</dd> </dl>
Доступность
СкопированоСкринридеры взаимодействуют с <dl>
по-разному, и это не баг, а фича. Например, есть разница в том, как они считают количество вложенных терминов <dt>
, и как пользователи перемещаются между всеми элементами внутри списка.
Не задавайте тегу <dl>
явную роль term
, чтобы исправить странности. Это плохо влияет на мобильный и десктопный VoiceOver.
Подсказки
Скопировано💡 При вёрстке перечня метаданных (пар «ключ-значение») удобно разделитель вносить в псевдоэлемент, а не писать текстом рядом с каждым ключом:
dt::after { content: ': ';}
dt::after { content: ': '; }
💡 В отличие от списков <ul>
и <ol>
, группы терминов (<dt>
) и описаний (<dd>
) с недавних пор можно оборачивать в <div>
.