• [读码时间] 完美拖拽


    说明:代码取自网络,注释为原文所有!

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>完美拖拽</title>
        <style type="text/css">
            html, body {
                overflow: hidden;
            }
    
            body, div, h2, p {
                margin: 0;
                padding: 0;
            }
    
            body {
                color: #fff;
                background: #000;
                font: 12px/2 Arial;
            }
    
            p {
                padding: 0 10px;
                margin-top: 10px;
            }
    
            span {d
                color: #ff0;
                padding-left: 5px;
            }
    
            #box {
                position: absolute;
                width: 300px;
                height: 150px;
                background: #333;
                border: 2px solid #ccc;
                top: 50%;
                left: 50%;
                margin: -75px 0 0 -150px;
            }
    
                #box h2 {
                    height: 25px;
                    cursor: move;
                    background: #222;
                    border-bottom: 2px solid #ccc;
                    text-align: right;
                    padding: 0 10px;
                }
    
                    #box h2 a {
                        color: #fff;
                        font: 12px/25px Arial;
                        text-decoration: none;
                        outline: none;
                    }
        </style>
        <script type="text/javascript">
    window.onload=function ()
    {
        var oBox=document.getElementById("box");
        var oH2 = oBox.getElementsByTagName("h2")[0];
        var oA = oBox.getElementsByTagName("a")[0];
        var aSpan = oBox.getElementsByTagName("span");
        var disX = disY = 0;
        var bDrag = false;
        var aPos = [{x:oBox.offsetLeft, y:oBox.offsetTop}]
    
        //鼠标按下, 激活拖拽
        oH2.onmousedown = function (event)
        {
            var event = event || window.event;
            bDrag = true;
            disX = event.clientX - oBox.offsetLeft;
            disY = event.clientY - oBox.offsetTop;
    
            aPos.push({x:oBox.offsetLeft, y:oBox.offsetTop})
    
            this.setCapture && this.setCapture();
    
            return false
        };
    
        //拖拽开始
        document.onmousemove = function (event)
        {
            if (!bDrag) return;
            var event = event || window.event;
            var iL = event.clientX - disX;
            var iT = event.clientY - disY;
            var maxL = document.documentElement.clientWidth - oBox.offsetWidth;
            var maxT = document.documentElement.clientHeight - oBox.offsetHeight;
    
            iL = iL < 0 ? 0 : iL;
            iL = iL > maxL ? maxL : iL;
    
            iT = iT < 0 ? 0 : iT;
            iT = iT > maxT ? maxT : iT;
    
            oBox.style.marginTop = oBox.style.marginLeft = 0;
            oBox.style.left = iL + "px";
            oBox.style.top = iT + "px";
    
            aPos.push({x:iL, y:iT})
    
            status();
    
            return false
        };
    
        //鼠标释放, 结束拖拽
        document.onmouseup = window.onblur = oH2.onlosecapture = function ()
        {
            bDrag = false;
            oH2.releaseCapture && oH2.releaseCapture();
            status()
        };
    
        //回放拖动轨迹
        oA.onclick = function ()
        {
            if (aPos.length == 1) return;
            var timer = setInterval(function ()
            {
                var oPos = aPos.pop();
                oPos ? (oBox.style.left = oPos.x + "px", oBox.style.top = oPos.y + "px", status()) : clearInterval(timer)
            }, 30);
    
            this.focus = false;//去除链接虚线
    
            return false
        };
    
        //阻止冒泡
        oA.onmousedown = function (event)
        {
            (event || window.event).cancelBubble = true
        };
    
        //监听状态函数
        function status ()
        {
            aSpan[0].innerHTML = bDrag;
            aSpan[1].innerHTML = oBox.offsetTop;
            aSpan[2].innerHTML = oBox.offsetLeft
        }
    
        //初始调用
        status()
    };
        </script>
    </head>
    <body>
        <div id="box">
            <h2><a href="javascript:;">点击回放拖动轨迹</a></h2>
            <p><strong>Drag:</strong><span></span></p>
            <p><strong>offsetTop:</strong><span></span></p>
            <p><strong>offsetLeft:</strong><span></span></p>
        </div>
    </body>
    </html>
    View Code
  • 相关阅读:
    【AtCoder】Tenka1 Programmer Contest(C
    【AtCoder】AGC024
    【AtCoder】ARC098题解
    java反射机制详解 及 Method.invoke解释
    Spring切入点表达式常用写法
    border-radius 样式表CSS3圆角属性
    jquery判断自己是父节点的第几个子节点
    Spring事务配置的五种方式
    Spring中PropertyPlaceholderConfigurer的使用
    js中使用s(c)标签
  • 原文地址:https://www.cnblogs.com/sx00xs/p/6488040.html
Copyright © 2020-2023  润新知