zoukankan      html  css  js  c++  java
  • javascript 完美拖动效果

    原生js拖动效果

    • 我用的是 ES6 的语法,不了解的同学可以先了解下 ES6 的语法
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>js 拖动效果</title>
        <style>
            #drag {
                 100px;
                height: 100px;
                background: #000;
                position: absolute;
            }
        </style>
    </head>
    <body>
        <div id="drag"></div>   
        
        <script>
            window.onload = () => {
                let obj = document.getElementById('drag');
                let offsetX,offsetY;
                obj.onmousedown = e => {
                    offsetX = e.clientX - obj.offsetLeft;
                    offsetY = e.clientY - obj.offsetTop;
    
                    window.onmousemove = e => {
                        obj.style.left = e.clientX - offsetX + 'px';
                        obj.style.top  = e.clientY - offsetY + 'px';
                    };
                };
    
                obj.onmouseup = e => {
                    window.onmousemove = null;
                }
            };
        </script>
    </body>
    </html>
    

    jquery 拖动效果

    • 我这里使用的版本是 jquery-1.12.4 不同的版本可能需要调整
    <!doctype html>
    <html lang="zh-cn">
    <head>
        <meta charset="UTF-8">
        <title>jquery</title>
        <style>
            div {
                 100px;
                line-height: 100px;
                background: #000;
                color: skyblue;
                position: absolute;
                top: 0;
                left: 0;
            }
        </style>
    </head>
    <body>
    
    <div>点住进行拖拽</div>
    
    <!-- javascript -->
    <script src="jquery-1.12.4.min.js"></script>
    
    <script>
      $(function(){
            function drag(obj) {
                obj.on("mousedown", start);
                function start(e) {
                    var event = e || window.event;
                    deltaX = event.clientX - obj.offset().left;
                    deltaY = event.clientY - obj.offset().top;
                    // 鼠标坐标减去div离浏览器左上角的坐标
                    $(document).on("mousemove", move);
                    $(document).on("mouseup", stop);
                    // 当鼠标移动的时候绑定mousemove事件
                    // 当鼠标放开的时候绑定一个stop函数
                }
    
                function move(e) {
                    var event = e || window.event;
                    obj.css({
                        "left": (event.clientX - deltaX) + "px",
                        "top": (event.clientY - deltaY) + "px"
                    });
                    //只要鼠标移动就触发move函数 设置div坐标
                    // 鼠标的坐标减去div离浏览器左上角的坐标就是div自己的目标
                    return false;
                }
    
                function stop() {
                    // 当鼠标放开时解除document绑定的事件
                    $(document).off("mousemove", move);
                    $(document).off("mouseup", stop);
                    // $(document).off(); 解除所有绑定过的事件,这样也行
                }
            }
            drag( $('div') );
    });
    </script>
    </body>
    </html>
    
    
  • 相关阅读:
    POJ 1251 Jungle Roads 最小生成树
    HDU 1879 继续畅通工程 最小生成树
    HDU 1875 畅通工程再续 最小生成树
    HDU 1863 畅通工程 最小生成树
    CodeForces 445B DZY Loves Chemistry (并查集)
    UVA 11987 Almost Union-Find (并查集)
    UVALive(LA) 4487 Exclusive-OR(带权并查集)
    UVALive 3027 Corporative Network (带权并查集)
    UVALive(LA) 3644 X-Plosives (并查集)
    POJ 2524 Ubiquitous Religions (并查集)
  • 原文地址:https://www.cnblogs.com/liaohui5/p/10581669.html
Copyright © 2011-2022 走看看