移动的盒子

<!--
 * @Author: your name
 * @Date: 2021-04-08 14:30:47
 * @LastEditTime: 2021-04-08 19:16:21
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \二阶段\4.8\陈志宝\移动的盒子.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>Document</title>
    <style>
      * {
        padding: 0;
        margin: 0;
      }
      .box {
        width: 800px;
        height: 500px;
        border: 10px solid black;
        margin: auto;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        top: 0;
      }
      .box1 {
        width: 30px;
        height: 30px;
        background-color: #f00;
        border: 10px solid black;
        position: absolute;
        top: 0;
        left: 0;
      }
    </style>
  </head>
  <body>
    <div class="box">
      <div class="box1"></div>
    </div>
    <script>
      var oBox = document.querySelector(".box");
      var oBox1 = document.querySelector(".box1");
      var maxTop = oBox.clientHeight - oBox1.offsetHeight;
      var maxLeft = oBox.clientWidth - oBox1.offsetWidth;
      var t;
      document.onkeydown = function (e) {
        var e = event || e;
        var keyCode = e.keyCode || e.which;
        console.log(keyCode);
        clearInterval(t);
        t = setInterval(function () {
          //定义上下的方向的移动距离,是通过offsetLeft是具有定位元素的祖先元素获取的
          var left = oBox1.offsetLeft;
          var top = oBox1.offsetTop;

          if (keyCode == 38) {
            top -= 10;
          }
          if (keyCode == 40) {
            top += 10;
          }
          if (keyCode == 37) {
            left -= 10;
          }
          if (keyCode == 39) {
            left += 10;
          }
          if (left < 0) {
            left = 0;
          }
          if(top<0){
            top=0;
          }
          if (top > maxTop) {
            top = maxTop;
          }
          if (left > maxLeft) {
            left = maxLeft;
          }
          oBox1.style.cssText = `left:${left}px;top:${top}px`;
        }, 50);
      };
    </script>
  </body>
</html>
posted @ 2021-04-09 01:41  干饭吧  阅读(41)  评论(0编辑  收藏  举报