Vue常用按键别名详解

在 Vue 中,常用的按键别名共有 9 个核心别名,用于快速监听键盘事件,它们分别是:.enter.tab.delete.esc.space.up.down.left.right。通过这些别名,开发者可以直接在模板中绑定按键事件,无需手动处理键码或兼容性问题。


详细分析

1. 按键别名列表及作用

以下为 Vue 官方支持的按键别名及其对应的按键和典型使用场景:

别名 对应按键 典型场景
.enter Enter(回车键) 表单提交、搜索确认
.tab Tab(制表键) 表单焦点切换
.delete Delete 和 Backspace 删除内容、撤销操作
.esc Escape(退出键) 关闭弹窗、取消操作
.space Space(空格键) 播放/暂停、选中选项
.up ↑(上方向键) 列表导航、数值增加
.down ↓(下方向键) 列表导航、数值减少
.left ←(左方向键) 横向导航、日期切换
.right →(右方向键) 横向导航、日期切换

2. 代码示例

以下是一个包含全部常用别名的完整示例:

<template>
  <div>
    <!-- 回车键 -->
    <input @keyup.enter="handleEnter" placeholder="按回车提交" />
    
    <!-- Tab键(需配合 keydown 事件) -->
    <input @keydown.tab="handleTab" placehol
<think>我们正在讨论Vue的事件修饰符。事件修饰符是Vue为v-on指令提供的特殊后缀,用于处理DOM事件细节。 常用的事件修饰符包括: .stop - 调用 event.stopPropagation(),阻止事件冒泡 .prevent - 调用 event.preventDefault(),阻止默认行为 .capture - 添加事件侦听器时使用 capture 模式(即事件捕获阶段处理) .self - 只当事件是从侦听器绑定的元素本身触发时才触发回调(即事件源是自身才触发) .once - 只触发一次回调 .passive - 以 { passive: true } 模式添加侦听器,提升移动端性能(尤其滚动性能) 此外,还有按键修饰符(如 .enter, .tab, .delete, .esc, .space, .up, .down, .left, .right)和系统修饰键(如 .ctrl, .alt, .shift, .meta)等。 下面我们将详细说明这些事件修饰符的用法和场景。</think>### Vue 常用事件修饰符详解 事件修饰符是 Vue 为 `v-on` 指令提供的特殊后缀,用于简化常见 DOM 事件处理逻辑。以下是核心修饰符及其应用场景: --- #### **基础事件修饰符** 1. **`.stop`** - 阻止事件冒泡 ```html <button @click.stop="handleClick">点击不会向上冒泡</button> ``` 2. **`.prevent`** - 阻止默认行为 ```html <form @submit.prevent="onSubmit">阻止表单默认提交</form> ``` 3. **`.capture`** - 使用捕获模式(从外向内触发) ```html <div @click.capture="outer">外层先触发</div> ``` 4. **`.self`** - 仅当事件源是元素自身时触发(忽略子元素冒泡) ```html <div @click.self="onlySelf">子元素点击不会触发</div> ``` 5. **`.once`** - 事件只触发一次 ```html <button @click.once="oneTime">仅生效一次</button> ``` 6. **`.passive`** - 提升滚动性能(不阻塞主线程) ```html <div @scroll.passive="onScroll">移动端优化</div> ``` --- #### **按键修饰符** 7. **系统按键** ```html <!-- 组合键 --> <input @keyup.ctrl.enter="submit"> <!-- 精确按键 --> <input @keyup.exact.esc="close"> ``` 8. **常用按键别名** | 修饰符 | 对应按键 | |--------------|----------------------| | `.enter` | Enter 回车键 | | `.tab` | Tab 键 | | `.delete` | Delete / Backspace | | `.esc` | Esc 键 | | `.space` | 空格键 | | `.up`/`.down`| 上下方向键 | --- #### **鼠标修饰符** 9. **鼠标按键限定** ```html <div @click.middle="middleClick">中键点击</div> <div @click.right.prevent>禁用右键菜单</div> <!-- 其他:.left, .right, .middle --> ``` --- ### 修饰符链式调用 可串联使用多个修饰符: ```html <!-- 阻止冒泡 + 阻止默认行为 + 只触发一次 --> <a @click.stop.prevent.once="doSomething">链接</a> ``` --- ### 性能与场景对比 | 修饰符 | 典型场景 | 注意事项 | |--------------|--------------------------|--------------------------| | `.passive` | 移动端滚动事件 | 不能与 `.prevent` 共用 | | `.exact` | 精确控制系统修饰键组合 | 需 Vue 2.5+ | | `.once` | 一次性操作(如表单提交) | 解绑后不影响手动触发 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值