天天看點

有彈出層時建立遮罩層并禁止螢幕滾動

在點選登入注冊後通常要建立遮罩層,使整個螢幕隻能操作登入視窗部分的内容。首先需要設定彈出框的z-index值為3,使彈出層距離使用者更近。還需要建立一個div寬高占滿整個螢幕,用來做遮罩層。(z-index=2)。同時設定這兩個div都隐藏,當觸發點選事件時再顯示。

HTML代碼:   

<a class="navigation1-a" οnclick="show_Win('register', 'movingbar1', event)" href="#" target="_blank" rel="external nofollow" >還沒賬号?現在注冊</a>

下面是JS代碼:

function show_Win(div_Win, tr_Title, event) {//參數1:要顯示的div的id,參數2:div裡的頭部,可移動的地方。參數3:暫時沒用。
        var js_Title = $(document.getElementById("tr_Title")); //标題
        js_Title.css("cursor", "move"); //改變光标為可移動的圖案
	//擷取彈出層
	var msgObj = $("#" + div_Win); //要彈出的div的id名
	msgObj.css('display', 'block'); //必須先彈出此行,否則msgObj[0].offsetHeight為0,因為"display":"none"時,offsetHeight無法取到資料;如果彈出框為table,則為'',如果為div,則為block,否則textbox長度無法充滿td
	//y軸位置
	var js_Top = -parseInt(msgObj.height()) / 2 + "px";
	//x軸位置
	var js_Left = -parseInt(msgObj.width()) / 2 + "px";
	msgObj.css({
		"margin-left": js_Left,
		"margin-top": js_Top
	});
	document.getElementById('bg').style.display = 'block';//遮罩層
	document.documentElement.style.overflowY = 'hidden'; //禁止螢幕滾動
	//使彈出層可移動
	msgObj.draggable({
		handle: js_Title,
		scroll: false
	});
}

//關閉彈出層
function closeLogin() {
	var closeRegisterPageLayerButton1 = document.getElementById("register");
	var closeRegisterPageLayerButton2 = document.getElementById("Login"); //根據ID擷取登入彈窗對象
	closeRegisterPageLayerButton1.style.display = "none"; //給彈窗對象設定關閉操作
	closeRegisterPageLayerButton2.style.display = "none";
	document.getElementById('bg').style.display = 'none'; //關閉遮罩層
	document.documentElement.style.overflowY = 'scroll'; //螢幕可滾動
}
           

注:本人為JS實習生一枚,不斷學習,不斷進步,歡迎各位前輩批評指教。