toolbar
Маркира контейнер като лента с инструменти — групиран набор от свързани контроли (лента за форматиране, ред с иконни бутони). Намалява броя на точките за достъп с Tab: лента с 10 бутона се превръща в една точка на достъп, а между бутоните се навигира с клавишите-стрелки.
Кога да се използва
Когато има ред (или колона) от три или повече свързани контроли — лента за форматиране на текст в редактор, ред с икони над поле за чат, действия за редактиране на снимки. Предимството е ефективност при навигация с клавиатура: вместо всеки бутон да е отделна точка за достъп с Tab, лентата с инструменти заема само една такава точка, а децата й се достигат чрез клавишите-стрелки.
Лентата с инструменти ТРЯБВА да има достъпно наименование (aria-label или aria-labelledby). Ориентацията по подразбиране е хоризонтална; за вертикална лента се задава aria-orientation="vertical".
Децата обикновено са бутони (<button>), с role="separator" между логически групи. Лентите с инструменти МОГАТ да съдържат бутони, превключващи бутони, връзки, menubutton и други малки контроли — но не цели форми или списъчни уиджети.
Клавиатура и управление на фокуса
Съгласно шаблона APG toolbar:
- Tab премества фокуса в лентата с инструменти върху първия или последния фокусиран контрол; Tab премества фокуса ИЗВЪН нея.
- Стрелките Дясно/Ляво (Горе/Долу при вертикална ориентация) преместват фокуса между елементите на лентата.
- Home / End прескачат до първия / последния елемент.
- Всеки отделен бутон се активира с Enter или Space — неговият начин на активиране остава непроменен от ролята toolbar.
Използва се roving tabindex: само един елемент от лентата с инструменти има tabindex="0" в даден момент.
Чести грешки
- Всички бутони в лентата с инструменти имат
tabindex="0". Обезсмисля изцяло шаблона — Tab все така обхожда всеки бутон поотделно. - Лента с инструменти без достъпно наименование.
- Бутоните в лентата нямат етикети, защото визуалното им представяне е икона. Добавете
aria-labelкъм всеки. - Смесване на toolbar със семантиката на
role="group". Изберете едно: toolbar предполага навигация с клавишите-стрелки, group — не. role="toolbar"върху елемент<nav>. Ролите си противоречат — използвайте само едната.
Пример
<div role="toolbar" aria-label="Text formatting">
<button type="button" tabindex="0" aria-pressed="false" aria-label="Bold">B</button>
<button type="button" tabindex="-1" aria-pressed="false" aria-label="Italic">I</button>
<button type="button" tabindex="-1" aria-pressed="false" aria-label="Underline">U</button>
<span role="separator" aria-orientation="vertical"></span>
<button type="button" tabindex="-1" aria-label="Insert link">Link</button>
</div>