zoukankan      html  css  js  c++  java
  • 鼠标拖拽效果

    拖拽效果

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>拖拽效果</title>
        <style>
            div{200px;height: 200px;background: cyan;position: absolute;}
        </style>
        <script>
            window.onload = function(){
                var oDiv = document.getElementById('div1');
                //鼠标按下
                oDiv.onmousedown = function(ev){
                    var e = ev || window.event;
                    //在鼠标按下是计算坐标
                    //offsetX或Y是鼠标相对于移动物体左上角的坐标
                    var offsetX = e.clientX - oDiv.offsetLeft;
                    var offsetY = e.clientY - oDiv.offsetTop;
    
                    //鼠标移动效果                
                    document.onmousemove = function(ev){
                        var e = ev || window.event;
                        oDiv.style.left = e.clientX - offsetX +'px';
                        oDiv.style.top = e.clientY - offsetY +'px';
                    }
    
                }
                //鼠标抬起
                document.onmouseup = function(){
                    document.onmousemove = null;
                }
    
    
            }
    
        </script>
    </head>
    <body>
        <div id="div1"></div>
    </body>
    </html>

    浏览器效果:

     把上面的拖拽效果封装成函数:

    代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>拖拽效果</title>
        <style>
            div{200px;height: 200px;background: cyan;position: absolute;}
        </style>
        <script>
            window.onload = function(){
                var oDiv = document.getElementById('div1');
                drag(oDiv);
            }
    
    /*------------封装拖拽函数------------*/
            function drag(node){
                ////offsetX或Y用于存取鼠标相对于移动物体左上角的坐标
                var offsetX = 0;
                var offsetY = 0;
                //鼠标按下
                node.onmousedown = function(ev){
                    var e = ev || window.event;
                    //在鼠标按下是计算坐标
                    //offsetX或Y是鼠标相对于移动物体左上角的坐标
                     offsetX = e.clientX - this.offsetLeft;
                     offsetY = e.clientY - this.offsetTop;
    
                    //鼠标移动效果                
                    document.onmousemove = function(ev){
                        var e = ev || window.event;
                        node.style.left = e.clientX - offsetX +'px';
                        node.style.top = e.clientY - offsetY +'px';
                    }
    
                }
                //鼠标抬起
                document.onmouseup = function(){
                    document.onmousemove = null;
                }
    
            }
    
    /*------------封装拖拽函数end------------*/
        </script>
    </head>
    <body>
        <div id="div1"></div>
    </body>
    </html>

    浏览器效果与上面相同;

    把封装好的函数(如下)说明:

            //形参node为元素节点
            //调用格式为    drag(元素节点);

    /*------------封装拖拽函数------------*/
            //形参node为元素节点
            //调用格式为    drag(元素节点);
            function drag(node){
                ////offsetX或Y用于存取鼠标相对于移动物体左上角的坐标
                var offsetX = 0;
                var offsetY = 0;
                //鼠标按下
                node.onmousedown = function(ev){
                    var e = ev || window.event;
                    //在鼠标按下是计算坐标
                    //offsetX或Y是鼠标相对于移动物体左上角的坐标
                     offsetX = e.clientX - this.offsetLeft;
                     offsetY = e.clientY - this.offsetTop;
    
                    //鼠标移动效果                
                    document.onmousemove = function(ev){
                        var e = ev || window.event;
                        node.style.left = e.clientX - offsetX +'px';
                        node.style.top = e.clientY - offsetY +'px';
                    }
    
                }
                //鼠标抬起
                document.onmouseup = function(){
                    //主动调用鼠标移动事件对象函数(方法)
                    document.onmousemove = null;
                }
    
            }
    
    /*------------封装拖拽函数end------------*/
  • 相关阅读:
    16平衡树
    15二叉检索树
    11用户权限
    10触发器
    8函数
    8存储过程
    linux下如何进入单用户模式
    RHEL6.4 字符模式下安装图形界面图文教程
    杂记
    Java内存管理(一):深入Java内存区域
  • 原文地址:https://www.cnblogs.com/taohuaya/p/9599765.html
Copyright © 2011-2022 走看看