Кратко
СкопированоСвойство виджета из 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>
c типами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 года. Также с атрибутом знакомы все современные браузеры. Более старые версии скринридеров могут не поддерживать все значения атрибута, игнорировать его у ссылок и кнопок, а ещё не рассказывать о типе попапа.