vue上下左右键盘事件练习

创建一个div在div上按键盘中的上下左右,这个div会根据你所按的键盘 来进行移动且每次移动10px(利用vue)

题主要的代码如下

img


<meta charset="utf-8" />
<style>
    div.item{position:relative;width:100px;height:100px;border:solid 1px #ccc;display:inline-block}
</style>
<div id="app">
   <div class="item"  v-bind:style="{ left: left + 'px', top: top + 'px' }"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: { left:0,top:0 },
        mounted() {
            document.addEventListener('keydown', (e) => {
                switch (e.keyCode) {
                    case 38://上
                        this.top -= 10;
                        break;
                    case 40://下
                        this.top += 10;
                        break;
                    case 37://左
                        this.left -= 10;
                        break;
                    case 39://右
                        this.left += 10;
                        break;
                }
                console.log(e.keyCode)
            })
        }
    })
</script>

有帮助麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~

https://blog.csdn.net/weixin_34409357/article/details/86325284


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="container">
        <div :style="{top:top +'px',left:left+'px'}"
            style="width: 100px;height: 100px;background-color: aqua;position: absolute;">

        </div>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    (function () {
        document.onkeydown = function (e) {
            if (e.keyCode === 38) {
                vue.control('up');
            } else if (e.keyCode === 40) {
                vue.control('down');
            } else if (e.keyCode === 37) {
                vue.control('left');
            } else if (e.keyCode === 39) {
                vue.control('right');
            }
        }
    })();
    let vue = new Vue({
        el: '#container',
        data: {
            left: 500,
            top: 350,
        },
        methods: {
            control(type) {
                switch (type) {
                    case 'up':
                        this.top -= 10;
                        break;
                    case 'down':
                        this.top += 10;
                        break;
                    case 'left':
                        this.left -= 10;
                        break;
                    case 'right':
                        this.left += 10;
                        break;
                }
            }
        }
    });
</script>

</html>