js:為窗口盒子添加拖拽事件


一,在網頁中添加一個獨立的顯示窗口,為窗口添加onmousedown和onmouseup事件來使窗口可以通過鼠標的拖拽移動。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/User3.js"></script>
    <style type="text/css">
        body{
            width: 2000px;
            height: 2000px;
        }
        .box{
            width: 150px;
            height: 200px;
            position: absolute;
            right: 20px;
            border: 1px solid red;
        }
        .aff{
            transition:all 1s;
        }
    </style>
    <script language="JavaScript">
        /* obj.addEventListener(xEvent,fn, true)
         事件冒泡
         例: 當有父子關系的元素,都觸發單擊事件的時候,會形成事件流,事件流中的
         事件會依順序逐個觸發。
         addEventListener第三個參數說明
         第三個參數是指事件的冒泡觸發順序,false 表示從子元素到父元素依次觸發事件。
         true  表示從父元素到子元素依次觸發事件。

         * */
        function scrollEvent(obj,xEvent, fn) {
            if(obj.attachEvent){
                obj.attachEvent("on"+xEvent,fn);
            }
            if(obj.addEventListener){
                obj.addEventListener(xEvent,fn, true);//addEventListener  w3c標准。
            }
        }
        /*DOMMouseScroll  mousewheel鼠標滾動后才會觸發事件。
         scroll 鼠標滾動時就會觸發的事件*/
        window.onload = function(){
            dom.addClass( $("oDiv"),"aff");
            var  top=$("oDiv").style.top;
            top=parseInt(top);
            //添加scroll事件
            scrollEvent(document,"scroll",function(){
                var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
                var h=scrollTop+top+"px";
                $("oDiv").style.top=h;
            });

            //鼠標按下事件
            $("oDive").onmousedown = function(){
                dom.removeClass($("oDiv"),"aff");
                //獲取鼠標位置
                var ev=window.event||event;
                var ofX= ev.clientX - $("oDiv").offsetLeft;
                var ofY= ev.clientY - $("oDiv").offsetTop;
                //鼠標移動事件
                document.onmousemove = function(){
                    ev=window.event||event;
                    var x=ev.clientX;
                    var y= ev.clientY;
                    $("oDiv").style.left = (x-ofX)+"px";
                    $("oDiv").style.top = (y-ofY)+"px";
                }
            };
            //鼠標離開位置
            $("oDive").onmouseup = function(){
                dom.addClass( $("oDiv"),"aff");
                //移除事件
                document.onmousemove = null;
            }
        }

    </script>

</head>
<!--事件冒泡-->
<body >
<div style="top:40px;" class="box" id="oDiv">
    <div style="height: 30px;background-color: #000000;" id="oDive"></div>
                 </div>
        </body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM