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>

     

  • 相关阅读:
    Neko's loop HDU-6444(网络赛1007)
    Parameters
    SETLOCAL
    RD / RMDIR Command
    devenv 命令用法
    Cannot determine the location of the VS Common Tools folder.
    'DEVENV' is not recognized as an internal or external command,
    How to change Visual Studio default environment setting
    error signing assembly unknown error
    What is the Xcopy Command?:
  • 原文地址:https://www.cnblogs.com/hr-7/p/14173039.html
Copyright © 2011-2022 走看看