原生js通过类实现拖拽

3 篇文章 0 订阅
  class Drag{
    constructor(dom){
        this.isDrag=false; //拖拽开关
        this.boxX=null; //鼠标点击时盒子初始坐标
        this.boxY=null;
        this.mouseX=null; //鼠标点击市鼠标初始坐标
        this.mouseY=null;
        this.X=null; //鼠标在盒子上的偏移值
        this.Y=null;
      dom.addEventListener('mousedown',function (e) {
              //    拖拽开始
              this.isDrag=true;
              // 盒子坐标
              this.boxX=dom.offsetLeft;
              this.boxY=dom.offsetTop;
              //  鼠标坐标
              this.mouseX=e.clientX;
              this.mouseY=e.clientY;
              //鼠标在盒子上的坐标偏移
              this.X = this.mouseX - this.boxX;
              this.Y = this.mouseY - this.boxY;
      });
      dom.addEventListener('mousemove',function (e) {
          if(this.isDrag){
              //当前鼠标坐标
              let currentX=e.clientX;
              let currentY=e.clientY;
              //根据鼠标在盒子上的偏移位置设置盒子具体位置
              dom.style.left=currentX-this.X + 'px';
              dom.style.top=currentY-this.Y + 'px';
          }
      });
      dom.addEventListener('mouseup',function (e) {
          // 鼠标抬起,拖拽关闭
          this.isDrag=false;
      });
      dom.addEventListener('mouseleave',function () {
          // 鼠标抬起,拖拽关闭
          this.isDrag=false;
      })
    }
}
//调用
let drag = new Drag(dom);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值