vue使用键盘方向键选择页面元素
时间: 2023-08-30 11:12:30 浏览: 45
Vue中可以使用keydown事件监听键盘方向键的按下操作,并通过相应的方法实现选择页面元素的功能。具体实现可以参考以下代码:
```html
<template>
<div>
<div class="item" :class="{ active: isActive(0) }">Item 1</div>
<div class="item" :class="{ active: isActive(1) }">Item 2</div>
<div class="item" :class="{ active: isActive(2) }">Item 3</div>
<div class="item" :class="{ active: isActive(3) }">Item 4</div>
</div>
</template>
<script>
export default {
data() {
return {
activeIndex: -1,
items: ['Item 1', 'Item 2', 'Item 3', 'Item 4'],
}
},
methods: {
isActive(index) {
return this.activeIndex === index
},
setActive(index) {
this.activeIndex = index
},
handleKeyDown(event) {
switch (event.keyCode) {
case 37: // left arrow
if (this.activeIndex > 0) {
this.setActive(this.activeIndex - 1)
}
break
case 38: // up arrow
if (this.activeIndex > 0) {
this.setActive(this.activeIndex - 1)
}
break
case 39: // right arrow
if (this.activeIndex < this.items.length - 1) {
this.setActive(this.activeIndex + 1)
}
break
case 40: // down arrow
if (this.activeIndex < this.items.length - 1) {
this.setActive(this.activeIndex + 1)
}
break
}
}
},
mounted() {
document.addEventListener('keydown', this.handleKeyDown)
},
beforeDestroy() {
document.removeEventListener('keydown', this.handleKeyDown)
}
}
</script>
<style scoped>
.item {
padding: 10px;
margin: 10px;
border: 1px solid #ccc;
}
.active {
background-color: #f0f0f0;
}
</style>
```
在上面的代码中,我们通过keydown事件监听键盘方向键的按下操作,并通过setActive方法改变activeIndex的值,从而实现选择页面元素的功能。同时,我们也可以根据activeIndex的值来动态绑定样式,以显示当前选择的元素。