事件修饰符

收藏610

阅读24189

更新时间2025-08-22

不同的 v-on 修饰符

事件修饰符用于不同的情况。 当我们监听键盘事件、鼠标点击事件时,我们可以使用事件修饰符,甚至可以将事件修饰符相互组合使用。

事件修饰符 .once 可以在键盘和鼠标单击事件之后使用。


键盘按键事件修饰符

我们有三种不同的键盘事件类型 keydown, keypresskeyup

对于每个按键事件类型,我们可以准确指定按键事件发生后监听哪个按键。 例如,我们有 .space, .enter, .w.up 等。

可以将按键事件写入网页,也可以用 console.log(event.key) 写入控制台,自己查找某个按键的值:

示例

keydown 键盘事件触发"getKey"方法,事件对象中的"key"值将写入控制台和网页。

<input v-on:keydown="getKey"> <p> {{ keyValue }} </p> data() {   return {     keyValue = ''   } }, methods: {   getKey(evt) {     this.keyValue = evt.key     console.log(evt.key)   } } »

我们还可以选择限制事件仅在鼠标单击或按键与系统修饰键 .alt, .ctrl, .shift.meta 组合发生时发生。 系统修饰键 .meta 代表 Windows 计算机上的 Windows 键,或 Apple 计算机上的命令键。

按键修饰符 详细信息
.[Vue key alias] Vue 中最常见的键都有自己的别名:
  • .enter
  • .tab
  • .delete
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right
.[letter] 指定按下该键时出现的字母。 例如:使用 .s 键修饰符来监听"S"键。
.[system modifier key] .alt.ctrl.shift.meta。 这些键可以与其他键结合使用,或者与鼠标单击结合使用。

示例

当用户在 <textarea> 标签内写入"s"时,使用 .s 修饰符创建警报。

<div id="app">   <p>Try pressing the 's' key:</p>   <textarea v-on:keyup.s="createAlert"></textarea> </div> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <script>   const app = Vue.createApp({     methods: {       createAlert() {         alert("You pressed the 'S' key!")       }     }   })   app.mount('#app') </script> »

组合键盘事件修饰符

事件修饰符也可以相互组合使用,以便调用方法必须同时发生不止一件事。

示例

结合使用 .s.ctrl 修饰符,可以在 <textarea> 标签内同时按下"s"和"ctrl"时创建警报。

<div id="app">   <p>Try pressing the 's' key:</p>   <textarea v-on:keydown.ctrl.s="createAlert"></textarea> </div> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <script>   const app = Vue.createApp({     methods: {       createAlert() {         alert("You pressed the 'S' and 'Ctrl' keys, in combination!")       }     }   })   app.mount('#app') </script> »

鼠标按钮修饰符

要对鼠标单击做出反应,我们可以编写 v-on:click,但要指定单击的是哪个鼠标按钮,我们可以使用 .left, .center.right 修饰符。

触控板用户:您可能需要用两根手指单击,或者单击计算机上触控板的右下角来创建右键单击。

示例

当用户右键单击 <div> 元素时更改背景颜色:

<div id="app">   <div v-on:click.right="changeColor"        v-bind:style="{backgroundColor:'hsl('+bgColor+',80%,80%)'}">     <p>Press right mouse button here.</p>   </div> </div> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <script>   const app = Vue.createApp({     data() {       return {         bgColor: 0       }     },     methods: {       changeColor() {         this.bgColor+=50       }     }   })   app.mount('#app') </script> »

鼠标按钮事件还可以与系统修饰键结合使用。

示例

当用户右键单击 <div> 元素并结合"ctrl"键时更改背景颜色:

<div id="app">   <div v-on:click.right.ctrl="changeColor"        v-bind:style="{backgroundColor:'hsl('+bgColor+',80%,80%)'}">     <p>Press right mouse button here.</p>   </div> </div> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <script>   const app = Vue.createApp({     data() {       return {         bgColor: 0       }     },     methods: {       changeColor() {         this.bgColor+=50       }     }   })   app.mount('#app') </script> »

除了 .right 修饰符之外,还可以使用事件修饰符 .prevent 来防止右键单击时出现默认下拉菜单。

示例

右键单击更改 <div> 元素的背景颜色时,下拉菜单将不会出现:

<div id="app">   <div v-on:click.right.prevent="changeColor"        v-bind:style="{backgroundColor:'hsl('+bgColor+',80%,80%)'}">     <p>Press right mouse button here.</p>   </div> </div> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <script>   const app = Vue.createApp({     data() {       return {         bgColor: 0       }     },     methods: {       changeColor() {         this.bgColor+=50       }     }   })   app.mount('#app') </script> »

通过在方法内使用 event.preventDefault() 可以防止右键单击后出现下拉菜单,但使用 Vue .prevent 修饰符后,代码将变得更具可读性且更易于维护。

您还可以结合其他修饰符对鼠标左键单击做出反应,例如 click.left.shift:

示例

按住"shift"键盘键并在 <img> 标签上按鼠标左键可更改图像。

<div id="app">   <p>Hold 'Shift' key and press left mouse button:</p>   <img v-on:click.left.shift="changeImg" v-bind:src="imgUrl"> </div> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <script>   const app = Vue.createApp({     data() {       return {         imgUrlIndex: 0,         imgUrl: 'img_tiger_square.jpeg',         imgages: [           'img_tiger_square.jpeg',           'img_moose_square.jpeg',           'img_kangaroo_square.jpeg'         ]       }     },     methods: {       changeImg() {         this.imgUrlIndex++         if(this.imgUrlIndex>=3){           this.imgUrlIndex=0         }         this.imgUrl = this.images[this.imgUrlIndex]       }     }   })   app.mount('#app') </script> »

Vue 练习

通过练习测试自己

练习题:

提供正确的代码,以便 <div> 元素在右键单击时改变颜色。

此外,添加代码,以便在右键单击网页时不显示默认下拉菜单。

<div id="app">
  <div v-on:click.="changeColor"
      v-bind:style="{backgroundColor:'hsl('+bgColor+',80%,80%)'}">
    <p>Press right mouse button here.</p>
  </div>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        bgColor: 0
      }
    },
    methods: {
      changeColor() {
        this.bgColor+=50
      }
    }
  })
  app.mount('#app')
</script>

相关

视频

RELATED VIDEOS

更多

免费

Web前端开发极速入门
初级 Web前端开发极速入门

220622次学习

收藏

免费

前端入门_HTML5
初级 前端入门_HTML5

619062次学习

收藏

免费

30分钟学会网站布局
初级 30分钟学会网站布局

239149次学习

收藏

免费

CSS视频教程-玉女心经版
初级 CSS视频教程-玉女心经版

394761次学习

收藏

免费

独孤九贱(1)_HTML5视频教程

免费

独孤九贱(6)_jQuery视频教程

免费

独孤九贱(7)_Bootstrap视频教程

免费

独孤九贱(2)_CSS视频教程
初级 独孤九贱(2)_CSS视频教程

230705次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

62万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.5万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

71.2万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.9万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23.1万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

34.1万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号