zoukankan      html  css  js  c++  java
  • 拖拽事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            #box1{
                 100px;
                height: 100px;
                background-color: red;
                position: absolute;
            }
            #box2{
                 100px;
                height: 100px;
                background-color: yellow;
                position: absolute;
                left: 200px;
                top: 200px;
            }
        </style>
        <script>
            window.onload=function(){
                /* 
                    拖拽box1的元素
                        -拖拽的流程
                        1.当鼠标在被拖拽元素上按下时,开始拖拽 onmousedown
                        2.当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
                        3.当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
                */
                // 获取box1
                var box1=document.getElementById("box1");
                var box2=document.getElementById("box2");
                var img=document.getElementById("img");
    
            //开启box1的拖拽
            drag(box1);
            drag(box2);
            drag(img);
    
               
            };
    
    
            /* 
                提取一个专门用来设置拖拽的函数
                参数:开启拖拽的元素
            */
           function drag(obj){
                // 当鼠标在被拖拽元素上按下时,开始拖拽 onmousedown
                obj.onmousedown=function(event){
    
    
                    // 设置box1捕获所有鼠标按下的事件
                    /* 
                        setCapture()
                        - 只有IE支持,但是在火狐浏览器中调用时不会报错,而如果使用chrome调用,会报错
                    */
                    /* if(box1.setCapture){
                    box1.setCapture();
                    } */
                    obj.setCapture&&box1.setCapture();
                    event=event||window.event;
                    // div的偏移量 鼠标.clientX - 元素.offsetLeft
                    // div的偏移量 鼠标.clientY - 元素.offsetTop
                    var ol=event.clientX-obj.offsetLeft;
                    var ot=event.clientY-obj.offsetTop;
    
    
                    // 为document绑定一个onmousemove事件
                    document.onmousemove=function(event){
                        event=event||window.event;
                    // 当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
                    // 获取鼠标的坐标
                    var left=event.clientX-ol;
                    var top=event.clientY-ot;
                    // 修改box1的位置
                    obj.style.left=left+"px";
                    obj.style.top=top+"px";
                    };
                    //  为document绑定一个鼠标松开事件
                    document.onmouseup=function(){
                    // 当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
                    //  取消document的onmousemove事件
                    document.onmousemove=null;
                    // 取消document的onmouseup事件
                    document.onmouseup=null;
                    // 当鼠标松开时,取消对事件的捕获
                    obj.releaseCapture&&obj.releaseCapture();
                    };
    
                    /* 
                    当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容,
                    此时会导致拖拽功能的异常,这个是浏览器提供的默认行为,
                    如果不希望发生这个行为,则可以通过return false来取消默认行为
    
                    但是这招对IE8不起作用
                    */
                    return false;
                    };
           }
        </script>
    </head>
    <body>
        我是一段文字
        <div id="box1"></div>
        <div id="box2"></div>
        <img src="./img/1.png" id="img" style="position: absolute;">
    </body>
    </html>

     

  • 相关阅读:
    Chrome插件开发,美化网页上的文件列表。chrome-extension,background
    Chrome插件开发,美化网页上的文件列表。chrome-extension,content-scripts
    ASP.NET MVC 常用扩展点:过滤器、模型绑定等
    Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager
    企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET
    分享一个html+js+ashx+easyui+ado.net权限管理系统
    ASP.NET MVC Filters 4种默认过滤器的使用【附示例】
    ASP.NET MVC Controllers and Actions
    玩转控件:Fucking ERP之流程图
    玩转控件:对Dev的GridControl控件扩展
  • 原文地址:https://www.cnblogs.com/hr-7/p/14173039.html
Copyright © 2011-2022 走看看