Vuetify предоставляет встроенную поддержку навигации с клавиатуры для большинства компонентов интерфейса, что обеспечивает доступность и удобство использования приложений. Навигация с клавиатуры особенно важна для пользователей, которые не могут использовать мышь, а также для ускоренного взаимодействия с интерфейсом.
В Vuetify ключевые элементы управления поддерживают фокусировку и
обработку событий клавиш по умолчанию. Для большинства интерактивных
компонентов используются стандартные клавиши: Tab для
перемещения фокуса между элементами, Enter и
Space для активации, а также стрелки (ArrowUp,
ArrowDown, ArrowLeft, ArrowRight)
для перемещения внутри вложенных элементов.
Фокусировка — это способность элемента получать
активное состояние, которое можно использовать для взаимодействия с
клавиатурой. В Vuetify компоненты, такие как v-btn,
v-text-field, v-select, автоматически получают
фокус при навигации через Tab. Для управления фокусом можно
использовать следующие свойства и методы:
tabindex — определяет порядок перехода по элементам при
нажатии Tab. Элемент с tabindex="0" включен в
естественный порядок, отрицательное значение (-1) исключает
его из последовательности.focus() — программно переводит фокус на
компонент.Пример:
<v-btn ref="button" @click="handleClick">Нажми меня</v-btn>
<script>
export default {
methods: {
handleClick() {
this.$refs.button.focus();
}
}
}
</script>
Vuetify поддерживает события клавиш через стандартный синтаксис Vue,
используя директиву @keydown или специализированные
модификаторы:
<v-text-field
label="Введите текст"
@keydown.enter="submit"
@keydown.arrow-up="moveUp"
@keydown.arrow-down="moveDown"
/>
@keydown.enter — срабатывает при нажатии клавиши
Enter.@keydown.arrow-up / @keydown.arrow-down —
обработка стрелок для навигации в списках или таблицах.Для комплексных компонентов, таких как v-data-table,
v-select или v-autocomplete, стрелки и
Enter используются для выбора элементов без использования
мыши.
Компонент v-data-table поддерживает навигацию по строкам
с клавиатуры:
ArrowUp и ArrowDown перемещают активный
фокус между строками.Enter или Space может использоваться для
выбора строки.Пример:
<v-data-table
:headers="headers"
:items="items"
item-key="id"
@keydown.up.prevent="focusPrevious"
@keydown.down.prevent="focusNext"
/>
Методы focusPrevious и focusNext могут
реализовывать логику фокусировки на соседних строках.
Эти компоненты позволяют пользователю:
Enter или
Space.ArrowUp и
ArrowDown.Enter.Важно использовать свойство open-on-keydown, чтобы
обеспечить открытие выпадающего списка при вводе с клавиатуры.
Для компонентов, где стандартная навигация Vuetify недостаточна,
реализуется кастомная обработка клавиш с помощью директив
@keydown и методов управления фокусом. Пример для
кастомного меню:
<v-menu ref="menu" offset-y>
<template v-slot:activator="{ props }">
<v-btn v-bind="props" @keydown.arrow-down="openMenu">Меню</v-btn>
</template>
<v-list>
<v-list-item v-for="item in items" :key="item" @keydown.enter="selectItem(item)">
<v-list-item-title>{{ item }}</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
Метод openMenu может переводить фокус на первый элемент
списка, обеспечивая интуитивную навигацию.
Vuetify интегрирует ARIA-атрибуты в интерактивные компоненты для улучшения работы с клавиатурой и вспомогательными технологиями:
role="menu", role="listbox" — обозначают
контейнеры с элементами для выбора.aria-selected — отмечает выбранные элементы.aria-expanded — используется для раскрывающихся
компонентов, таких как v-menu или
v-select.Правильное использование ARIA гарантирует, что клавиатурная навигация будет работать корректно для всех пользователей.
Vuetify поддерживает Vue-модификаторы для клавиатурных событий:
.enter, .esc, .tab — прямое
соответствие клавишам..up, .down, .left,
.right — стрелки..prevent и .stop — предотвращают
стандартное поведение и всплытие события.Пример использования:
<v-text-field
@keydown.enter.prevent="submitForm"
@keydown.esc.stop="closeDialog"
/>
Это обеспечивает точный контроль над поведением интерфейса при навигации с клавиатуры.
tabindex — основа
навигации.Enter,
Space, стрелки.v-data-table, v-select,
v-menu.Эффективная навигация с клавиатуры в Vuetify повышает доступность приложений и улучшает опыт пользователей без мыши.