JavaScript 面向对象的拖拽

该博客主要展示了通过HTML、CSS和JavaScript实现元素拖拽效果的代码。HTML部分创建了一个div元素,CSS部分设置了元素的样式,JavaScript部分定义了一个Drag类,通过监听鼠标事件实现元素的拖拽功能。

一、body

<div id="box"></div>

二、css

<style>

#box {

  position: abaolute;

  top: 0;

  left: 0;

  width: 100px;

  height: 100px;

}

</style>

三、JavaScript

<script>

  class Drag{

    constructor(el) {

      this.el = el;

      el.startOffset = null;

      el.startPoint = null;

      let move = (e) => {

        this.move(e);

      }

      let end = (e)=>{

        document.removeEventListener('mousemove', move);

        document.removeEventListener('mouseup', end);

      }

      el.addEventListener('mousedown', (e)=>{

        this.start(e);

        document.addEventListener('mousemove', move);

        document.addEventListener('mouseup', end);

      })

    }

    start(e) {

      let {el} = this;

      this.startOffset = {

        x: el.offsetLeft,

        y: el.offsetTop

      }

      this.startPoint = {

        x: e.clientX,

        y: e.clientY

      }

    }

    move(e) {

      let {el, startOffset, startPoint} = this;

      let nowPoint = {

        x: e.clientX,

        y: e.clientY

      }

      let dis = {

        x: nowPoint.x - startPoint.x,

        y: nowPoint.y - startPoint.y

      }

      el.style.left = startOffset.x + dis.x + 'px';

      el.style.top =startOffset.y + dis.y + 'px';

    }

  }

  let box = document.querySelector('#box');

  let drag = new Drag(box);

</script>

 

转载于:https://www.cnblogs.com/hyshi/p/10913552.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值