首页 > 其他 > 详细

2.做一个元素拖拽

时间:2021-07-26 22:33:42      阅读:19      评论:0      收藏:0      [点我收藏+]

普通方式的元素拖拽可以用鼠标按下时间触发  元素拖动时移动  鼠标抬起时结束

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>拖拽</title>
    <link rel="stylesheet" href="1.css">
    <script>
        window.onload = function(){
            var iTarget = document.getElementById("iTarget");
            iTarget.onmousedown = function(){
                toX = event.clientX - iTarget.offsetLeft;
                toY = event.clientY - iTarget.offsetTop;
                document.onmousemove = function(){
                    needX = event.clientX - toX;
                    needY = event.clientY - toY;
                    if(needX > innerWidth - iTarget.offsetWidth)needX = innerWidth - iTarget.offsetWidth;
                    if(needY > innerHeight - iTarget.offsetHeight)needY = innerHeight - iTarget.offsetHeight;
                    if(needX<=0) needX = 0;
                    if(needY<=0) needY = 0;    
                    iTarget.style.left = needX + "px";
                    iTarget.style.top = needY + "px";
                    document.onmouseup = function(){
                        document.onmousemove = null;
                    }
                } 
            }
        }
    </script>
</head>
<body>
    <div id="iTarget">

    </div>
</body>
</html>

 

也可以用事件委托机制使用 

元素给一个drag类  有就触发  没有就不触发 嵌套文档中移动的拖动事件  文档中鼠标抬起结束

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>元素委托拖拽</title>
    <link rel="stylesheet" href="1.css">
    <script>
        window.onload = function(){
            document.documentElement.onmousedown = function(e){
                ev = e || event;
                iTarget = ev.target || ev.scrElement;
                if(iTarget.className == "drag"){
                    toX = ev.clientX - iTarget.offsetLeft;
                    toY = ev.clientY - iTarget.offsetTop;
                    document.onmousemove = function(e){
                        ev = e || event;
                        iTarget = ev.target || ev.scrElement;
                        needX = ev.clientX - toX;
                        needY = ev.clientY - toY;
                        if(needX > innerWidth - iTarget.offsetWidth)needX = innerWidth - iTarget.offsetWidth;
                        if(needY > innerHeight - iTarget.offsetHeight)needY = innerHeight - iTarget.offsetHeight;
                        if(needX<=0) needX = 0;
                        if(needY<=0) needY = 0;
                        iTarget.style.left = needX + "px";
                        iTarget.style.top = needY + "px";
                        document.onmouseup = function(){
                            document.onmousemove = null;
                    }
                    }
                }
            }
        }
    </script>
</head>
<body>
    <div id="iTarget" class="drag"></div>
</body>
</html>

 

  

2.做一个元素拖拽

原文:https://www.cnblogs.com/fuyi2345/p/15063042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!