美文网首页web前端
原生js鼠标拖拽效果

原生js鼠标拖拽效果

作者: 姜治宇 | 来源:发表于2020-12-01 10:43 被阅读0次

常用的鼠标事件有onmousedown(鼠标按下)、onmousemove(鼠标拖动)、onmouseup(鼠标弹起)。
拖拽效果原理很简单,我们在鼠标按下时记录当前的鼠标位置,在鼠标拖动时再记录一下鼠标当前位置,然后根据这两个位置计算偏移量,然后改变div元素的left和top的位置,鼠标弹起后取消拖动。
当然了,待拖动div元素要设置为绝对定位。
代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DRAG</title>
</head>

<body>
    <div id="box" style="position: absolute;background-color:red;width:100px;height:100px;display: inline-block;">

    </div>
</body>

</html>
<script>
    var box = document.getElementById('box');
    var isDrag = false;//是否拖拽
    var diffX, diffY;
    box.onmousedown = function (e) {
        isDrag = true;
        //鼠标当前位置
        var x = e.clientX;
        var y = e.clientY;
        //鼠标相对于div的位置
        console.log(this.offsetLeft);

        diffX = x - this.offsetLeft;
        diffY = y - this.offsetTop;
    }
    box.onmousemove = function (e) {
        if (!isDrag) {//不让拖动
            return;
        }
        //鼠标当前位置
        var x = e.clientX;
        var y = e.clientY;
        box.style.left = x - diffX + 'px';
        box.style.top = y - diffY + 'px';
    }
    box.onmouseup = function () {
        isDrag = false;
    }
</script>

相关文章

  • 原生js鼠标拖拽效果

    常用的鼠标事件有onmousedown(鼠标按下)、onmousemove(鼠标拖动)、onmouseup(鼠标弹...

  • js实现拖拽

    ①鼠标按下+鼠标移动 → 拖拽②鼠标松开 → 无拖拽③鼠标偏移 → 拖拽距离 js实现 ① onmousedown...

  • 原生js拖拽效果

    最近新学了拖拽效果,没有好记性,只好用烂笔头记录一下了。首先讲讲拖拽的思路(只分析水平方向,垂直方向类似): 首先...

  • web前端-原生鼠标拖拽效果

    鼠标拖拽效果分为3个事件 鼠标按下事件onmousedown, 事件源是点击的对象, 就是我们要拖拽的对象 鼠标移...

  • 拖拽,碰撞检测

    1. 拖拽 1.1 拖拽原理 鼠标拖拽效果的实现,就是在鼠标摁下和移动的时候,修改元素的定位值的效果。 1.1.1...

  • js鼠标拖拽

    *{margin: 0;padding: 0;} 按住左键拖动 window.onload = func...

  • js鼠标拖拽

    Document .fours{ position: abs...

  • js拖拽html元素工具类

    复制就能用的拖拽js方法 原生js实现拖拽元素方法 使用(注意拖拽目标元素需绝对定位 position: 'abs...

  • Drag Drop---API

    在h4标准中,我们定义个拖拽事件是很麻烦的,用原生的js来实现拖拽的效果。我们需要计算拖拽的元素的坐标位置和距离之...

  • 原生JS实现拖拽条效果

    HTML结构: 首先是我们的HTML结构,我们的拖拽条使用了 标签来实现, 10类型设置为range即可出现拖拽条...

网友评论

    本文标题:原生js鼠标拖拽效果

    本文链接:https://www.haomeiwen.com/subject/wrwjwktx.html