案例 拖拽效果

92 阅读1分钟

拖拽案例

首先我们有一个需求

首先创建一个div盒子

<div></div>

添加样式

div{
  width : 300px;
  height : 300px;
  background-color: pink;
  position: absolute;
}

获取元素

document.querySelector('div')

设置div在点击时的坐标

var startX = 0
var startY = 0

设置div在点击时移动的距离(偏移量)

var eleLeft = 0
var eleTop = 0

     //定义一个开关,控制元素的移动效果
    var flag = false
    //给元素添加鼠标按下事件
    odiv.onmousedown = function (e) {
        console.log('鼠标按下事件触发');
        flag = true
        //获取坐标
        startX = e.clientX
        startY = e.clientY
        //获取元素的偏移量
        eleleft = odiv.offsetLeft
        eletop = odiv.offsetTop
    }
    //给document添加鼠标移动事件
    document.onmousemove = function (e) {
        console.log('鼠标移动事件触发');
        if (flag === false) {
            return
        }
        //获取新的坐标
        var newX = e.clientX
        var newY = e.clientY
        //计算移动距离
        var moveX = newX - startX
        var moveY = newY - startY
        //将移动距离和元素偏移量相加
        var x = moveX + eleleft
        var y = moveY + eletop
        //将添加的值赋值给元素样式
        odiv.style.left = x + 'px'
        odiv.style.top = y + 'px'
    }
    //给元素添加鼠标抬起事件
    odiv.onmouseup = function () {
        flag = false
        console.log('鼠标抬起事件触发');
    }