美文网首页
js鼠标拖拽事件

js鼠标拖拽事件

作者: 小菇凉大思想 | 来源:发表于2017-12-21 15:08 被阅读0次

只记录left,top同理。
clientX:返回鼠标相对于浏览器的水平坐标;
offsetLeft:返回当前对象距离浏览器(父对象)的左侧距离;
offsetWidth:对象的可见宽度;
onmousemove:鼠标移动事件;

连接点是鼠标放在div上拖动时的位置(坐标)不会改变的,起名字为unchangX;

鼠标拖动事件是利用position:absolute绝对定位改变left和top,left的位置是通过clientX-unchangeX得到的。

无标题.png
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>鼠标拖拽事件</title>
    <style type="text/css">
        #box{
            width:100px;
            height:100px;
            background-color:cornflowerblue;
            position:absolute;
            left:0;
            top:0;
        }
    </style>
</head>
<body>
    <div id="box"></div>
    <script type="text/javascript">
        window.onload = function(){
            var oDiv = document.getElementById("box"),
                unchangeX = 0,
                unchangeY = 0;
            oDiv.onmousedown =function(ev){//鼠标按下
                var oEvent=ev||event;
                var unchangeX = oEvent.clientX - oDiv.offsetLeft;//鼠标的x坐标减去box的左边距离,unchangeX这个距离是不会变的,通过这个新鼠标的X坐标减去unchangeX就是box的Left
                var unchangeY = oEvent.clientY - oDiv.offsetTop;
                document.onmousemove = function(ev){//为了防止鼠标移动太快而离开了DIV产生了bug,所以要给整个页面加onmousemove事件
                    var oEvent = ev||event;
                    var oLeft = oEvent.clientX - unchangeX;
                    var oTop = oEvent.clientY - unchangeY;
                    //优化部分:鼠标移动到浏览器左侧、右侧、上侧、下侧时的问题
                    if(oLeft < 0){
                        oLeft = 0;
                    }else if(oLeft>document.documentElement.clientWidth - oDiv.offsetWidth){
                        oLeft = document.documentElement.clientWidth - oDiv.offsetWidth;
                    }
                    if(oTop < 0){
                        oTop = 0;
                    }else if(oTop>document.documentElement.clientHeight - oDiv.offsetHeight){
                        oTop = document.documentElement.clientHeight - oDiv.offsetHeight;
                    }
                    oDiv.style.left = oLeft + 'px';
                    oDiv.style.top = oTop + 'px';
                };
                document.onmouseup = function(){//鼠标松开时
                    document.onmousemove = null;//把鼠标移动清除
                    document.onmouseup = null;//把鼠标松开清除
                };
                return false;
            };
        }
    </script>
</body>
</html>

相关文章

  • 怎么区分鼠标是单击还是拖动?

    js的鼠标事件 拖拽常用事件 onmousedown 鼠标按下触发事件onmousemove 鼠标按下时持续触发事...

  • js实现拖拽

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

  • js鼠标拖拽事件

    只记录left,top同理。clientX:返回鼠标相对于浏览器的水平坐标;offsetLeft:返回当前对象距离...

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

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

  • 31.JS

    118. 事件的拖拽 120. 鼠标滚动事件

  • July 30-day13-Python中Pygame

    触碰事件 有鼠标、键盘等等 对鼠标事件的应用 鼠标点击事件的应用(对鼠标的拖拽) 字体动画的效果 键盘事件的应用 ...

  • js鼠标拖拽

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

  • js鼠标拖拽

    Document .fours{ position: abs...

  • 事件

    1、鼠标的移入移除js部分 2、鼠标事件js部分 3、事件对象js部分 4、键盘事件js部分 5、输入框事件js部...

  • 2018-11-07 JavaScript

    Web事件 鼠标点击事件:click鼠标悬停事件:hover鼠标移走事件:mouseout鼠标提交事件,触发JS函...

网友评论

      本文标题:js鼠标拖拽事件

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