Vue.js предоставляет удобные модификаторы для обработки различных событий мыши, что позволяет легко определять, какая именно кнопка была нажата. Эти модификаторы работают с любыми событиями мыши (click
, mousedown
, mouseup
и др.).
Vue поддерживает три основных модификатора для кнопок мыши:
<template>
<!-- Левая кнопка мыши (используется по умолчанию) -->
<button @click.left="handleLeftClick">Левый клик</button>
<!-- Правая кнопка мыши -->
<div @mousedown.right="handleRightClick">Правый клик</div>
<!-- Колесико мыши (средняя кнопка) -->
<div @click.middle="handleMiddleClick">Клик колесиком</div>
</template>
Модификаторы кнопок мыши можно комбинировать с клавиатурными модификаторами:
<div @click.ctrl.left="handleCtrlLeftClick">Ctrl + Левый клик</div>
<button @mousedown.shift.right="handleShiftRightClick">Shift + Правый клик</button>
Для предотвращения стандартного контекстного меню при правом клике:
<div @contextmenu.prevent.right="showCustomContextMenu">
Пользовательское контекстное меню
</div>
Пример использования для элементов перетаскивания:
<div
@mousedown.left="startDrag"
@mouseup.left="endDrag"
@mousemove="handleDrag"
>
Перетащи меня
</div>
Хотя .middle
и .right
работают с @dblclick
, это редко имеет практический смысл:
<div @dblclick.right="unusualHandler">Двойной правый клик</div>
.middle
может работать не на всех устройствах, особенно на тачпадах ноутбуков<template>
<div class="drawing-board"
@mousedown.left="startDrawing"
@mouseup.left="stopDrawing"
@mousemove="handleDrawing"
@click.right.prevent="showColorPicker">
<!-- Холст для рисования -->
</div>
</template>
<script>
export default {
methods: {
startDrawing(e) {
if (e.button !== 0) return; // Дополнительная проверка
this.isDrawing = true;
},
showColorPicker() {
this.showPicker = true;
}
}
}
</script>
.prevent
с правым кликом, если переопределяете стандартное поведение Vue.js предлагает три основных модификатора кнопок мыши (.left
, .right
, .middle
), которые можно гибко комбинировать с другими модификаторами для создания богатых интерактивных интерфейсов. Правильное использование этих модификаторов позволяет создавать удобные и функциональные UI-компоненты.