<details> Элемент раскрытия сведений HTML
Базовый уровень Широко доступно *
Эта функция хорошо зарекомендовала себя и работает на множестве устройств и в разных версиях браузеров. Она поддерживается браузерами с января 2020 года.
* Некоторые компоненты этой функции могут поддерживаться в разной степени.
Элемент <details> HTML создаёт виджет раскрытия, в котором информация становится видимой только после переключения виджета в открытое состояние. Для него необходимо указать сводку или метку с помощью элемента <summary>.
На экране виджет раскрытия обычно отображается в виде небольшого треугольника, который поворачивается (или переворачивается), обозначая открытое или закрытое состояние, и расположенной рядом метки. Содержимое элемента <summary> используется в качестве метки виджета раскрытия. Содержимое элемента <details> служит доступным описанием элемента <summary>.
Попробуйте
<details> <summary>Details</summary> Something small enough to escape casual notice. </details>
details {
border: 1px solid #aaaaaa;
border-radius: 4px;
padding: 0.5em 0.5em 0;
}
summary {
font-weight: bold;
margin: -0.5em -0.5em 0;
padding: 0.5em;
}
details[open] {
padding: 0.5em;
}
details[open] summary {
border-bottom: 1px solid #aaaaaa;
margin-bottom: 0.5em;
}
Виджет <details> может находиться в одном из двух состояний. В состоянии закрыт по умолчанию отображаются только треугольник и метка внутри <summary> (или строка по умолчанию, определённая пользовательским агентом, если <summary> не задан).
Когда пользователь нажимает на виджет или переводит на него фокус, а затем нажимает пробел, он «раскрывается», показывая своё содержимое. Именно поэтому виджеты раскрытия иногда называют «крутящимися»: обычно для обозначения открытия или закрытия используется треугольник, который поворачивается или переворачивается.
Вы можете использовать CSS для стилизации виджета раскрытия и программно открывать и закрывать его, задавая или удаляя атрибут open. К сожалению, в настоящее время встроенного способа анимировать переход между открытым и закрытым состояниями нет.
По умолчанию в закрытом состоянии высоты виджета достаточно только для отображения треугольника раскрытия и сводки. В открытом состоянии он расширяется, показывая содержащиеся в нём подробности.
Реализации, полностью соответствующие стандартам, автоматически применяют CSS к элементу display: list-item<summary>. Вы можете использовать это свойство или псевдоэлемент ::marker, чтобы настроить виджет раскрытия.
Атрибуты
Этот элемент включает глобальные атрибуты.
open-
Этот логический атрибут указывает, видны ли в данный момент подробности — то есть содержимое элемента
<details>. Подробности отображаются, если атрибут присутствует, и скрываются, если он отсутствует. По умолчанию атрибут отсутствует, поэтому подробности не видны.Примечание: Чтобы скрыть подробности, необходимо полностью удалить этот атрибут.
open="false"делает подробности видимыми, поскольку этот атрибут является логическим. name-
Этот атрибут позволяет объединить несколько элементов
<details>так, чтобы одновременно был открыт только один из них. Это позволяет разработчикам легко создавать такие элементы интерфейса, как аккордеоны, без использования скриптов.Атрибут
nameзадаёт имя группы — присвойте нескольким элементам<details>одинаковое значениеname, чтобы объединить их в группу. Одновременно может быть открыт только один из сгруппированных элементов<details>— открытие одного приведёт к закрытию другого. Если нескольким сгруппированным элементам<details>задан атрибутopen, открытым будет отображаться только первый из них в порядке исходного кода.Примечание: Элементы
<details>не обязательно должны находиться рядом друг с другом в исходном коде, чтобы входить в одну группу.
События
Помимо обычных событий, поддерживаемых элементами HTML, элемент <details> поддерживает событие toggle, которое отправляется элементу <details> при каждом изменении его состояния с открытого на закрытое или наоборот. Оно отправляется после изменения состояния, однако, если состояние меняется несколько раз до того, как браузер сможет отправить событие, события объединяются и отправляется только одно.
Чтобы отслеживать изменение состояния виджета, можно использовать обработчик события toggle:
details.addEventListener("toggle", (event) => {
if (details.open) {
/* the element was toggled open */
} else {
/* the element was toggled closed */
}
});
Примеры
>Простой пример раскрытия
В этом примере показан простой элемент <details> с элементом <summary>.
<details>
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
Результат
Создание открытого блока раскрытия
Чтобы блок <details> изначально находился в открытом состоянии, добавьте логический атрибут open:
<details open>
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
Результат
Несколько именованных блоков раскрытия
Мы добавили несколько блоков <details> с одинаковым именем, поэтому одновременно может быть открыт только один из них:
<details name="requirements">
<summary>Graduation Requirements</summary>
<p>
Requires 40 credits, including a passing grade in health, geography,
history, economics, and wood shop.
</p>
</details>
<details name="requirements">
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
<details name="requirements">
<summary>Job Requirements</summary>
<p>
Requires knowledge of HTML, CSS, JavaScript, accessibility, web performance,
privacy, security, and internationalization, as well as a dislike of
broccoli.
</p>
</details>
Результат
Попробуйте открыть все виджеты раскрытия. Когда вы откроете один, все остальные автоматически закроются.
Настройка внешнего вида
Теперь применим CSS, чтобы настроить внешний вид блока раскрытия.
CSS
details {
font:
16px "Open Sans",
"Calibri",
sans-serif;
width: 620px;
}
details > summary {
padding: 2px 6px;
width: 15em;
background-color: #dddddd;
border: none;
box-shadow: 3px 3px 4px black;
cursor: pointer;
}
details > p {
border-radius: 0 0 10px 10px;
background-color: #dddddd;
padding: 2px 6px;
margin: 0;
box-shadow: 3px 3px 4px black;
}
details:open > summary {
background-color: #ccccff;
}
Этот CSS создаёт интерфейс, похожий на интерфейс с вкладками, где щелчок по вкладке открывает её и показывает содержимое.
Примечание: В браузерах, не поддерживающих псевдокласс :open, для стилизации элемента <details> в открытом состоянии можно использовать селектор атрибута details[open].
HTML
<details>
<summary>System Requirements</summary>
<p>
Requires a computer running an operating system. The computer must have some
memory and ideally some kind of long-term storage. An input device as well
as some form of output device is recommended.
</p>
</details>
Результат
Пример настройки виджета раскрытия см. на странице <summary>.
Техническая сводка
| Категории содержимого | Потоковое содержимое, корень секционирования, интерактивное содержимое, ощутимое содержимое. |
|---|---|
| Допустимое содержимое | Один элемент <summary>, за которым следует потоковое содержимое. |
| Опускание тегов | Не допускается: обязательны и открывающий, и закрывающий теги. |
| Допустимые родители | Любой элемент, допускающий потоковое содержимое. |
| Неявная роль ARIA | group |
| Допустимые роли ARIA | Роли role не допускаются |
| Интерфейс DOM | HTMLDetailsElement |
Спецификации
| Спецификация |
|---|
| HTML> # the-details-element> |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
details |
12 | 79 | 49До Firefox 57 существовала ошибка, из-за которой элементы<details> нельзя было открыть по умолчанию с помощью атрибута open, если для них было активно CSS-свойство animation. |
15 | 6 | 18 | 49Из-за ошибки элементы<details> нельзя было открыть по умолчанию с помощью атрибута open, если для них было активно CSS-свойство animation. |
14 | 6 | 1.0 | 4.4 | 6 |
name |
120 | 120 | 130 | 106 | 17.2 | 120 | 130 | 80 | 17.2 | 25.0 | 120 | 17.2 |
open |
12 | 79 | 49 | 15 | 6 | 18 | 49 | 14 | 6 | 1.0 | 4.4 | 6 |
search_match_opens |
97 | 97 |
148139–148Браузер неправильно прокручивает страницу к совпадающему тексту. См. ошибку 2006040. |
83 | 26.2Браузер неправильно прокручивает страницу к совпадающему тексту. См. ошибку 304174. |
97 |
148139–148Браузер неправильно прокручивает страницу к совпадающему тексту. См. ошибку 2006040. |
68 | 26.2Браузер неправильно прокручивает страницу к совпадающему тексту. См. ошибку 304174. |
18.0 | 97 | 26.2Браузер неправильно прокручивает страницу к совпадающему тексту. См. ошибку 304174. |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/details