Кратко
СкопированоСвойство виджета из WAI-ARIA. Означает, что элемент раскрывает попап — блок с содержимым, который появляется поверх всего остального на странице. Например, диалоговое окно или подменю.
Пример
Скопировано
<div role="menubar"> <button role="menuitem" type="button" aria-expanded="false" aria-controls="fonts" aria-haspopup="menu" > Начертание </button> <ul role="menu" id="fonts"> <!-- Элементы подменю --> </ul> <!-- Остальные элементы строки меню --></div>
<div role="menubar">
<button
role="menuitem"
type="button"
aria-expanded="false"
aria-controls="fonts"
aria-haspopup="menu"
>
Начертание
</button>
<ul role="menu" id="fonts">
<!-- Элементы подменю -->
</ul>
<!-- Остальные элементы строки меню -->
</div>
При фокусе на первом пункте меню скринридер прочитает код примерно так: «Начертание, подменю, один из пяти».
Как пишется
СкопированоДобавьте к тегу или элементу с ARIA-ролью, который открывает попап, атрибут aria. У него может быть одно из шести значений:
false(по умолчанию) — у элемента нет попапа.trueилиmenu— попап с ролью подменюmenu.listbox— попап с ролью выпадающего спискаlistbox.tree— попап с ролью древовидного спискаtree.grid— попап с ролью сеткиgrid.dialog— попап с ролью модального окнаdialog.
Важно, чтобы значение aria совпадало с ролью попапа. Если зададите атрибуту несуществующее значение, браузеры воспримут это как false.
Элемент, который открывает попап, обязательно должен быть интерактивным — на нём можно сделать фокус с клавиатуры, а также кликнуть или тапнуть по нему. Вот роли и теги, которым можно задавать aria:
<button>,<summary>,<input>с типамиbutton,image,reset,submitили ролиbutton.<a>или ролиlink.<input typeили роли= "range"> slider.<textarea>,<input>с типамиtext,email,tel,urlили ролиtextbox.<select>или ролиcombobox.tab.application.gridcell.menuitem.treeitem.
У <select> уже по умолчанию есть aria со значением listbox.
Часто у элементов с попапами есть визуальный указатель на то, что они что-то открывают. Это может быть иконка с треугольником, стрелкой, точками или линиями как в бургерном меню.
Пока что aria хорошо поддерживают JAWS и NVDA, начиная с версий 2023 года. Также с атрибутом знакомы все современные браузеры. Более старые версии скринридеров могут не поддерживать все значения атрибута, игнорировать его у ссылок и кнопок, а ещё не рассказывать о типе попапа.