js 原生_拖動頁面元素,鬆開釋放

嗯哼。很少說,直接上代碼了。spa

  • // 爲元素 綁定拖動事件
    function bindDragEvent(obj){
        obj.onmousedown = function(e){
            e = e || window.event;
            
            obj.setCapture && obj.setCapture();    // IE8 及如下 強制捕獲下一次單擊事件
            
            obj.fixedX = e.clientX - (obj.getBoundingClientRect().left - document.documentElement.clientLeft);
            obj.fixedY = e.clientY - (obj.getBoundingClientRect().top - document.documentElement.clientTop);
            
            document.onmousemove = function(e){
                e = e || window.event;
                
                var x = e.clientX + (document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft);
                var y = e.clientY + (document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop);
                
                obj.style.left = x - obj.fixedX + "px";    // 元素在頁面中的座標 = 鼠標在頁面中的座標 - 元素在頁面中的座標
                obj.style.top = y - obj.fixedY + "px";
            };
            
            document.onmouseup = function(){
                document.onmousemove = null;    // 解除 鼠標移動div跟隨 事件
                document.onmouseup = null;    // 解除鼠標鬆開事件
                obj.releaseCapture && obj.releaseCapture();    // IE8 及如下 解除強制捕獲單擊事件
            };
            
            return false;
        };
    }
相關文章
相關標籤/搜索