js原生手写一个拖拽小功能

先上效果图

附上代码

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>
    .four {
      width: 200px;
      height: 100px;
      background-color: #00f;
      position: relative;
    }
  </style>
</head>

<body>
  <div class="four" style="top:0;left:0"></div>
  <script>
    var div = document.getElementsByTagName('div')[0];
    function drag() {
      var disX,
        disY;
      div.addEventListener('mousedown', function (e) {
        var e = e || window.event;
        disX = e.pageX - parseInt(div.style.left);
        disY = e.pageY - parseInt(div.style.top);
        document.addEventListener('mousemove', move);
        document.addEventListener('mouseup', function (e) {
          document.removeEventListener('mousemove', move);
        })
      })
      function move(e) {
        var e = e || window.event;
        div.style.left = (e.pageX - disX) + 'px';
        div.style.top = e.pageY - disY + 'px';
      }
    }
    drag()
  </script>
</body>

</html>
相关推荐
江城开朗的豌豆3 分钟前
React状态更新踩坑记:我是这样优雅修改参数的
前端·javascript·react.js
阿珊和她的猫24 分钟前
autofit.js: 自动调整HTML元素大小的JavaScript库
开发语言·javascript·html
阿珊和她的猫5 小时前
v-scale-scree: 根据屏幕尺寸缩放内容
开发语言·前端·javascript
gnip10 小时前
vite和webpack打包结构控制
前端·javascript
烛阴12 小时前
前端必会:如何创建一个可随时取消的定时器
前端·javascript·typescript
萌萌哒草头将军13 小时前
Oxc 最新 Transformer Alpha 功能速览! 🚀🚀🚀
前端·javascript·vue.js
1024小神14 小时前
nextjs项目build导出静态文件
前端·javascript
parade岁月14 小时前
JavaScript 日期的奇妙冒险:当 UTC 遇上 el-date-picker
javascript
是一碗螺丝粉14 小时前
拯救你的app/小程序审核!一套完美避开审核封禁的URL黑名单机制
前端·javascript·微信小程序
Juchecar14 小时前
采用 Vue 3 实现单页应用(SPA)与本地数据存储方案
前端·javascript·vue.js