vue实现按键盘移动div啊

vue怎么按键盘上下左右使div移动,求大神进行解答,小弟感激不尽


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>方向键移动div</title>
    <style>
        #box1 {
            width: 200px;
            height: 200px;
            background-color: aqua;
            position: absolute;
        }
    </style>
    <script>
        window.onload = function () {
            var b1 = document.getElementById("box1");
            var distance = 10;
            alert("按下ctrl键加速,按下alt键减速");
            document.onkeydown = function (event) {
                event = event || window.event;
                if (event.ctrlKey) {
                    distance = 40;
                }
                if (event.shiftKey) {
                    distance = 5;
                }
                if (event.keyCode === 37) {
                    b1.style.left = b1.offsetLeft - distance + "px";
                } else if (event.keyCode === 38) {
                    b1.style.top = b1.offsetTop - distance + "px";
                } else if (event.keyCode === 39) {
                    b1.style.left = b1.offsetLeft + distance + "px";
                } else if (event.keyCode === 40) {
                    b1.style.top = b1.offsetTop + distance + "px";
                }
            };
        };
    </script>
</head>
<body>
<div id="box1"></div>
</body>

题目:
用VUE实现

创建一个div 在div上按键盘中的 上下左右,
这个div会根据你所按的键盘,来进行移动,
每次移动 10px,上下左右,div会有四个颜色,
div中的文字 随着上下左右 而变化

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <!-- 引入 -->
        <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>

    </head>
    <body>
        <!-- 容器 -->
        <div id="app">
            <!-- contenteditable="true"设置div为可编辑状态 -->
            <div id="hz" contenteditable="true" @keydown="move" :style="hz">
                {{message}}
            </div>
        </div>
        <script type="text/javascript">
            let vk = new Vue({
                el: "#app",
                data: {
                    message: "hello",
                    bl: {
                        left: 100,
                        top: 100
                    },
                    hz: {

                        height: 90 + 'px',
                        width: 90 + 'px',
                        backgroundColor: '#7FFFD4',
                        position: 'absolute',
                        left: 100 + 'px',
                        top: 100 + 'px'
                    }
                },
                methods: {
                    move(e) {


                        switch (e.keyCode) {
                            case 37:
                                vk.message = "你向左移动了一次";
                                vk.hz.backgroundColor = "#aaaaff";
                                vk.bl.left -= 10;
                                vk.hz.left = vk.bl.left + 'px';
                                break;
                            case 38:
                                vk.message = "你向上移动了一次";
                                vk.hz.backgroundColor = "#ffaa00";
                                vk.bl.top -= 10;
                                vk.hz.top = vk.bl.top + 'px';
                                break;
                            case 39:
                                vk.message = "你向右移动了一次";
                                vk.hz.backgroundColor = "#00aa7f";
                                vk.bl.left += 10;
                                vk.hz.left = vk.bl.left + 'px';
                                break;
                            case 40:
                                vk.message = "你向下移动了一次";
                                vk.hz.backgroundColor = "#ffff7f";
                                vk.bl.top += 10;
                                vk.hz.top = vk.bl.top + 'px';
                                break;
                        }
                        console.log(vk.hz.left)
                    }
                }
            })
        </script>
    </body>
</html>

注意改一下vue引入的地址