[vue] Vue键盘事件

1.Vue中常用的按键别名:

	@keydown 键盘按下时触发
	@keypress 键盘按住时触发
	@keyup 键盘弹起
	@keyup.13     按回车键
	@keyup.enter 回车
	@keyup.up    上键
	@keyup.down  下键
	@keyup.left     左键
	@keyup.right    右键
	@keyup.delete    删除键
	获取按键的键码 e.keyCode
<div id="root">
	<h2>欢迎来到{{name}}学习</h2>
	<input type="text"  @keyup.enter="showInfo">
</div>
new Vue({
	el:'#root',
	data:{
		name:'尚硅谷'
	},
	methods: {
		showInfo(e){
			console.log(e.target.value)
		}
	},
})

在这里插入图片描述

<div id="root">
	<h2>欢迎来到{{name}}学习</h2>
	<input type="text"  @keydown="showInfo">
</div>
	new Vue({
		el:'#root',
		data:{
			name:'尚硅谷'
		},
		methods: {
			showInfo(e){
				console.log(e.target.value)
			}
		},
	})

在这里插入图片描述

2.Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)

3.系统修饰键(用法特殊):ctrl、alt、shift、meta

(1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。

(2).配合keydown使用:正常触发事件。

4.也可以使用keyCode去指定具体的按键(不推荐)

5.Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名

<div id="root">
	<h2>欢迎来到{{name}}学习</h2>
	<input type="text" placeholder="按下回车提示输入" @keydown.huiche="showInfo">
</div>
Vue.config.keyCodes.huiche = 13 //定义了一个别名按键

new Vue({
		el:'#root',
		data:{
			name:'尚硅谷'
		},
		methods: {
			showInfo(e){
				// console.log(e.key,e.keyCode)
				console.log(e.target.value)
			}
		},
	})






参考:
Vue键盘事件

### Vue3 中实现键盘事件监听 在 Vue3 中,可以通过多种方式实现在组件内监听键盘事件的功能。下面展示两种常见的方式。 #### 使用 `@keyup` 或者 `@keydown` 模板指令绑定事件处理器 通过模板内的 v-on 指令可以方便地为 DOM 绑定事件监听器。这里给出一个简单的例子,当按下特定键时更改页面上的计数器数值: ```html <script setup> import { ref, onMounted, beforeUnmount } from &#39;vue&#39; const keyCounter = ref({ ArrowUp: 0, ArrowDown: 0 }) function handleKeydown(event) { switch (event.key) { case "ArrowUp": keyCounter.value.ArrowUp += 1; break; case "ArrowDown": keyCounter.value.ArrowDown += 1; break; } } // 添加全局事件监听器 onMounted(() => window.addEventListener(&#39;keydown&#39;, handleKeydown)) // 移除全局事件监听器以防内存泄漏 beforeUnmount(() => window.removeEventListener(&#39;keydown&#39;, handleKeydown)) </script> <template> <button @click="keyCounter.ArrowUp++">Simulate Up Key Press</button> <button @click="keyCounter.ArrowDown++">Simulate Down Key Press</button> <p>Up arrow pressed {{ keyCounter.ArrowUp }} time(s).</p> <p>Down arrow pressed {{ keyCounter.ArrowDown }} time(s).</p> </template> ``` 此代码片段展示了如何利用 `ref()` 创建响应式的数据属性,并且使用 `onMounted` 和 `beforeUnmount` 生命周期钩子来管理事件监听器的添加与移除[^1]。 #### 结合计算属性和样式动态调整界面状态 另一个更复杂的案例涉及到了根据不同的按键改变整个网页背景的颜色。这通常涉及到定义一组预设好的颜色映射表以及相应的处理逻辑。如下所示: ```html <script setup> import { ref, reactive, computed, onMounted, beforeUnmount } from &#39;vue&#39;; let currentColor = ref(&#39;#ffffff&#39;); const colorKeys = reactive({ a: &#39;#ffcccc&#39;, s: &#39;#ccffff&#39;, d: &#39;#d9bfff&#39; }); function changeBackgroundColor(event){ let newColor = colorKeys[event.key]; if(newColor !== undefined){ currentColor.value = newColor; } } onMounted(() => document.body.style.backgroundColor = currentColor.value); onMounted(() => addEventListener(&#39;keydown&#39;, changeBackgroundColor)); beforeUnmount(() => removeEventListener(&#39;keydown&#39;, changeBackgroundColor)); </script> <style scoped> body{ transition: background-color .5s ease-in-out; } </style> <template> <div :style="{ backgroundColor: currentColor}"> <h2 style="text-align:center;">Press A/S/D to Change Background Color!</h2> </div> </template> ``` 上述示例不仅实现了基于按键输入修改页面样式的功能,还加入了 CSS 过渡效果使得视觉变化更加平滑自然[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值