需求一:推盒子按照上下左右箭头 移动盒子
onkeydown 事件
<!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>    <style>        .box {            position: relative;            left: 0px;            top: 0px;            width: 100px;            height: 100px;            background: lightcoral;        }    </style></head><body>    <div class="box"></div>    <script>        let box = document.querySelector('.box');        //keypress 有一些系统键监听不到        // key        let t = 0, l = 0;        window.onkeydown = function (e) {            // e.key e.code e.keyCode 表示按下的键盘信息            // e.key按的哪个键  e.code是英文键盘字符 e.keyCode是键盘数组            switch (e.keyCode) {                             case 37:                    // 左箭头                    l -= 5;                    box.style.left = l + 'px';                    break;                case 38:                    // 上箭头                    t -= 5;                    box.style.top = t + 'px';                    break;                case 39:                    l += 5;                    box.style.left = l + 'px';                    // 右箭头                    break;                case 40:                    // 下箭头                    t += 5;                    box.style.top = t + 'px';                    break;            }        }    </script></body></html>
需求二 拖拽

<!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>拖拽</title>    <style>        #box {            position: fixed;            width: 50px;            height: 50px;            background-color: lightsalmon;            border-radius: 50%;            cursor: pointer;            /* 用户禁止选中 */            -webkit-user-select: none;            -moz-user-select: none;            -o-user-select: none;            user-select: none;        }        #box2{            position: fixed;            width: 50px;            height: 50px;            background-color:aqua;            border-radius: 50%;            cursor: pointer;            -webkit-user-select: none;            -moz-user-select: none;            -o-user-select: none;            user-select: none;        }        /* 其实mouseup并没有失效,而是你拖动时,鼠标选中了其他的元素,其实的话,鼠标即使松开,浏览器内部还是认为用户在复制文字,鼠标还是按下的状态,所以不会触发mouseup事件。 */    </style></head><body>    <div id="box">    </div>    <div id="box2">    </div>    <script>        let box = document.querySelector('#box');        let box2= document.querySelector('#box2');        function start(e) {            // 计算最大宽度和高度            this.maxTop = document.documentElement.clientHeight - this.offsetHeight;            this.maxLeft = document.documentElement.clientWidth - this.offsetWidth;            //记录球的初始位置和鼠标按下的位置            let pos = this.getBoundingClientRect();            // 球的初始位置            this.posLeft = pos.left;            this.postTop = pos.top;            // 鼠标按下的位置            this.startX = e.pageX;            this.startY = e.pageY;         // 为了下面的move和end正常拿到球的this,强制改变this指向,把改变this指向后的函数体绑定给window。        // this从window改成了球        // this._move是存储改变this指向之后的函数体        // 把所有需用用到的属性和方法都放在this上,            this._move = move.bind(this);            window.addEventListener('mousemove', this._move);            this._end = end.bind(this);            window.addEventListener('mouseup', this._end);        };        function move(e) {            // 改变之后的this是鼠标按下的元素            // 计算鼠标移动的距离【鼠标移动后的位置-鼠标移动前的位置】+球的初始位置=球最后的位置            let top = e.pageY - this.startY + this.postTop;            let left = e.pageX - this.startX + this.posLeft;            // 让top/left分别和最大值最小值比较,划定界限            top = top > this.maxTop ? this.maxTop : (top < 0 ? 0 : top);            left = left > this.maxLeft ? this.maxLeft : (left < 0 ? 0 : left);            // top left 就是最后球的位置            this.style.top=top+'px';            this.style.left=left+'px';        };        function end() {            window.removeEventListener('mousemove', this._move);            window.removeEventListener('mouseup', this._end);        };        box.addEventListener('mousedown', start);        box2.addEventListener('mousedown',start);    </script></body></html>