Vue.js поддерживает набор стандартных системных модификаторов клавиш, которые позволяют обрабатывать комбинации с клавишами Ctrl, Alt, Shift и другими. Эти модификаторы можно использовать с любыми событиями клавиатуры (keydown
, keyup
) и мыши (click
, mousedown
и др.).
<!-- Примеры использования в шаблоне -->
<input @keydown.ctrl="onCtrlPress">
<button @click.shift="onShiftClick">Shift+Click</button>
Поддерживаемые базовые модификаторы:
.ctrl
.alt
.shift
.meta
(Cmd на Mac, Win на Windows)Позволяют требовать точное сочетание клавиш (без дополнительных модификаторов):
<input @keydown.ctrl.exact="onPureCtrl">
<button @click.shift.exact="onPureShiftClick">
Можно комбинировать несколько модификаторов:
<textarea @keydown.ctrl.alt.delete="forceReset"></textarea>
Модификатор .meta
Автоматически адаптируется под ОС:
Модификатор .exact
Полезен когда нужно обработать строго определенную комбинацию:
<!-- Сработает только при нажатии именно A, без других модификаторов -->
<input @keydown.a.exact="onPureA">
Модификаторы мыши
Для событий мыши поддерживаются:
.left
- левая кнопка.right
- правая кнопка.middle
- колесико мышиПример:
<div @mousedown.middle="onMiddleClick">Клик колесиком</div>
<template>
<div>
<input @keydown.ctrl.s.prevent="saveDocument">
<button @click.alt.enter="alternativeSubmit">Alt+Enter</button>
</div>
</template>
<script>
export default {
methods: {
saveDocument(e) {
// .prevent предотвращает стандартное сохранение страницы браузером
this.saveContent();
},
alternativeSubmit() {
// Специальная обработка формы
}
}
}
</script>
<!-- Ctrl + Shift + Click -->
<div @click.ctrl.shift="openAdvancedMenu"></div>
<!-- Alt + Space -->
<input @keyup.alt.space="toggleSpecialMode">
Модификаторы работают и с кастомными событиями:
this.$emit('custom-event.ctrl', payload);
<my-component @custom-event.ctrl="handleCtrlEvent"/>
.ctrl.alt
=== .alt.ctrl
.shift
, не .Shift
)Vue.js предоставляет богатый набор системных модификаторов клавиш, которые можно гибко комбинировать для создания сложных и удобных интерфейсов. Правильное использование этих модификаторов значительно улучшает UX приложений.