亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js實現模態窗口的拖拽功能

發布時間:2020-07-14 18:47:37 來源:網絡 閱讀:3951 作者:蝸牛oscersong 欄目:開發技術

一.用到的幾個基本概念:

       (1)document.body.clientWidth/clientHeight :獲得BODY對象寬度/高度       
       (2)document.documentElement.clientWidth/clientHeight:用來獲得可見區域寬度/高度。

          clientWidth/clientHeight的計算方法:

             js實現模態窗口的拖拽功能

(3)offsetParent 是一個只讀屬性,返回一個指向最近的(closest,指包含層級上的最近)包含該元素的定位元素。如果沒有定位的元素,則 offsetParent 為最近的 table 元素對象或根元素(標準模式下為 htmlquirks 模式下為 body)。

offsetLeft:獲取對象相對于面或由 offsetParent 屬性指定的父坐標的計算左側位置

offsetTop:獲取對象相對于面或由 offsetTop 屬性指定的父坐標的計算頂端位置

       offsetWidth/offsetHeight計算方法:

           js實現模態窗口的拖拽功能

4clientX/clientY :事件屬性返回當事件被觸發時鼠標指針向對于瀏覽器頁面(當前窗口)的水平坐標/垂直坐標(不包含滾動條)。

二.拖拽的主要實現思想

     分為三步:

          (1)用戶在拖放元素上按下鼠標,拖放開始

               login.addEventListener("mousedown",drag,false);
          (2)用戶在拖放元素上移動鼠標,拖放元素在頁面中進行拖動

                 document.addEventListener("mousemove",move,false);

          (3)用戶鼠標一開拖放元素,拖放行為結束

                document.addEventListener("mouseup",up,false);

三.實現具體js代碼

window.onload = function () {

    var close = document.getElementsByClassName('close');
    var login = document.getElementById('login');
    var logins = document.getElementsByClassName('login');
    var screen = document.getElementById('dropback'); 
 
    function show(obj) {
        //獲取瀏覽器的寬和高
        var top = (document.documentElement.clientHeight - 250) / 2 - 150;
        var left = (document.documentElement.clientWidth - 300) / 2;
        //當點擊登錄按鈕時,登錄彈窗出現,遮罩層顯示
        screen.style.display = 'block'; //遮罩層顯示
        obj.style.display = 'block'; //登錄彈窗出現
        obj.style.left = left + 'px'; //登錄彈窗在屏幕中的位置
        obj.style.top = top + 'px'; 
    }
 
    function hide(obj) {
        //點擊差號時,登錄彈窗消失,遮罩層消失
        obj.style.display = 'none';
        screen.style.display = 'none';
    }

    //差號注冊點擊事件 點擊差號,彈窗消失   
    close[0].addEventListener("click", function () {
        hide(login);
    }, false);

    //登錄按鈕注冊點擊事件,點擊登錄彈出登錄彈窗
    logins[0].addEventListener("click", function () {
        show(login);
    }, false);

    //彈出框拖拽實現
    login.addEventListener("mousedown",drag,false);

    function drag(e){

        var e = e||window.event;    	
    	var _this = this; 	
    	var diffX = e.clientX - _this.offsetLeft;
    	var diffY = e.clientY - _this.offsetTop; 

    	document.addEventListener("mousemove",move,false);
    	document.addEventListener("mouseup",up,false);

    	function move(e){  

         var left = e.clientX-diffX;
         var top = e.clientY-diffY;

            if(left<0){
            	left = 0;
            }else if(left>document.documentElement.clientWidth - e.clientX){
                //沒有使用document.body.clientWidth因為此時頁面的高度只有100多,而現在要求彈窗在整個可視區中移動
            	left = document.documentElement.clientWidth - _this.offsetWidth;
            }

           if(top<0){
            	top = 0;
            }else if(top>document.documentElement.clientHeight - e.clientY){
            	top = document.documentElement.clientHeight - _this.offsetHeight;
            }

            _this.style.left = left + 'px';
            _this.style.top = top + 'px';
    }

    function up(){

    	    document.removeEventListener("mousemove",move,false);
    		document.removeEventListener("mouseup",up,false);
    }

    }
   
    
 
}


四.實現效果圖,隨著鼠標的拖拽,彈窗會在整個可視區進行移動

js實現模態窗口的拖拽功能

js實現模態窗口的拖拽功能

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镶黄旗| 隆安县| 阿图什市| 当雄县| 贵州省| 波密县| 万源市| 建宁县| 雅江县| 颍上县| 应用必备| 瓮安县| 滁州市| 葵青区| 开封县| 罗江县| 仪征市| 博白县| 调兵山市| 十堰市| 资兴市| 蕉岭县| 新闻| 大厂| 金川县| 航空| 绥中县| 长葛市| 肥东县| 上杭县| 阿尔山市| 祁连县| 凤冈县| 天等县| 胶南市| 当阳市| 陈巴尔虎旗| 马公市| 舞阳县| 镇坪县| 上虞市|