aria-expanded
Указва дали сгъваем елемент — бутон за разкриване, комбинирано поле, меню, елемент от дърво — е отворен в момента. Приема "true" или "false". Обикновено се съчетава с aria-controls, сочещ към областта, която контролът отваря.
Кога да се използва
Върху всеки контрол, който отваря и затваря друга област на потребителския интерфейс: заглавие на акордеон, бутон за разкриване „покажи повече”, задействащ елемент на комбинирано поле, бутон за меню, treeitem с дъщерни елементи, превключвател за навигация тип „хамбургер”. Контролът остава същия елемент при двете състояния — само атрибутът се превключва.
Ако контролът превключва състояние на самия елемент (заглушаване / отмяна на заглушаването, следване / спиране на следването), използвайте вместо това aria-pressed. aria-expanded описва връзка с друга област, обикновено идентифицирана чрез aria-controls.
Ролята определя дали aria-expanded е смислен: той се поддържа за button, combobox, link, tab, treeitem, menuitem, gridcell, row и няколко други. Поставянето му върху <div> без роля не дава полезен резултат.
Как да се поддържа синхронизиран
Допустимите стойности са "true" (областта е отворена) и "false" (областта е затворена). Подразбиращата се стойност при пропускане е „изобщо няма разгънато състояние” — което е различно от "false". Ако контролът може да се разгъва, рендирайте aria-expanded="false" в затвореното му състояние, вместо да го оставяте без атрибута.
Обновявайте атрибута в същия код, който анимира отварянето или затварянето на областта. Атрибутът е основният източник на истина, от който екранните четци четат; визуалният шеврон е вторичен знак за зрящите потребители.
Съчетайте с aria-controls="<region-id>", за да може екранният четец да обяви връзката: „Filters, button, collapsed, controls filter-panel”. Някои помощни технологии предлагат пряк път за прескачане към контролираната област.
Чести грешки
- Превключване на CSS клас на панела, без да се обръща
aria-expanded. - Използване на
aria-expandedвърху неинтерактивен елемент без роля. Атрибутът се игнорира. - Добавяне само на
aria-expanded="true"— никога не се рендира състоянието"false". Екранните четци не обявяват нищо в затвореното състояние. - Използване на
aria-expandedвърху контрол, който не разгъва реална област (например бутон „Изпрати”). - Объркване на
aria-expandedсaria-pressedпри превключващи бутони, които не отварят отделна област. - Пропускане на
aria-controls, оставяйки имплицитна връзката между задействащия елемент и панела.
Пример
<button
type="button"
aria-expanded="false"
aria-controls="filters-panel"
onclick="toggle(this)"
>
Filters
</button>
<div id="filters-panel" hidden>
<!-- filter controls -->
</div>