91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

昌乐县| 垣曲县| 方正县| 诏安县| 宜宾市| 吉林省| 怀仁县| 滁州市| 蒙阴县| 石城县| 鱼台县| 高唐县| 新丰县| 万源市| 禹城市| 乌拉特后旗| 罗江县| 邢台市| 视频| 衡东县| 泾川县| 扶余县| 贺兰县| 濮阳市| 马公市| 柘城县| 鄂州市| 商丘市| 武穴市| 南康市| 兰西县| 平潭县| 余干县| 东辽县| 鲜城| 且末县| 门头沟区| 龙江县| 聂拉木县| 赞皇县| 东平县|