1. 程式人生 > >如何製作彈出視窗

如何製作彈出視窗

彈出視窗十分的常用,下面是最常用的三種彈出視窗方式:

//第一種
//彈出對話方塊並輸出一段提示資訊  
alert("提示資訊!");  
//第二種
//彈出一個詢問框,有確定和取消按鈕  
//利用對話方塊返回的值 (true 或者 false)  
if (confirm("你確定提交嗎?")) {  
    alert("點選了確定");  
    }  
else{  
    alert("點選了取消");  
    }  
//第三種
//彈出一個輸入框
var name = prompt("請輸入您的名字", ""); //這裡會將輸入的內容賦給變數 name 
//這裡需要注意的是,prompt有兩個引數,前面是提示的話,後面是當對話框出來後,在對話方塊裡的預設值  
//我們可以把輸入的內容打印出來
alert("歡迎您:" + name)

下面是使用jQuery來製作自定義的彈框,實際上大部分的UI彈窗都是基於下面的方法拓展演化出來的。基本原理如下:

1.定義一個DIV,定義好其寬度和高度。在這個DIV中寫自己要展示的內容。

2.設定CSS隱藏上面的DIV。

3.使用jQuery控制顯示隱藏的DIV並用絕對定位設定DIV的位置,使其顯示在我們設定好的位置。

4.設定z-index屬性將DIV顯示在頁面最前面。

下面是帶有遮罩層的彈出窗程式碼示例:

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>pop window</title>
<link rel="stylesheet" href="tankuang.css">
<script src="jquery.js"></script>
<script type="text/javascript">
	$(function() {
		var oBtn = $('#show');
		var popWindow = $('.popWindow');
		var close = $('.popWindow h3 span');
		//瀏覽器可視區域的寬度
		var browserWidth = $(window).width();

		//瀏覽器可視區域的高度
		var browserHeight = $(window).height();

		//瀏覽器縱向滾動條距離上邊界的值
		var browserScrollTop = $(window).scrollTop();

		//瀏覽器橫向滾動條距離左邊界的值
		var browserScrollLeft = $(window).scrollLeft();

		//彈出視窗的寬度,outerWidth設定為true計算時會把padding,border和margin計算進去
		var popWindowWidth = popWindow.outerWidth(true);
		//彈出視窗的高度
		var popWindowHeight = popWindow.outerHeight(true);

		//left的值=瀏覽器可視區域的寬度/2-彈出視窗的寬度/2+瀏覽器橫向滾動條距離左邊界的值
		var positionLeft = browserWidth / 2 - popWindowWidth / 2
				+ browserScrollLeft;

		//top的值=瀏覽器可視區域的高度/2-彈出視窗的高度/2+瀏覽器縱向滾動條距離上邊界的值
		var positionTop = browserHeight / 2 - popWindowHeight / 2
				+ browserScrollTop;
		
		var maskDiv ='<div class="maskDiv" ></div>';
		//遮罩層的寬度
		var masWidth = $(document).width();
		var masHeight = $(document).height();
		//當瀏覽器大小發生改變時計算改變彈出視窗的位置
		$(window).resize(
				function() {
				if(popWindow.is(':visible')){//當popWindow是可見的時候設定變化
					browserWidth = $(window).width();
					browserHeight = $(window).height();
					positionLeft = browserWidth / 2 - popWindowWidth / 2
							+ browserScrollLeft;
					positionTop = browserHeight / 2 - popWindowHeight / 2
							+ browserScrollTop;					
					//重新設定彈出窗的位置,使其位置隨瀏覽器大小變化而變化
					popWindow.css({
						'left' : positionLeft + 'px',
						'top' : positionTop + 'px'
					});
					masWidth = $(document).width();
					masHeight = $(document).height();
					//重新設定遮罩層寬高,使其寬高隨瀏覽器大小變化而變化
					$(".maskDiv").width(masWidth).height(masHeight);
				}
				});

		//滾動滾動條時計算改變彈出視窗的位置
		$(window).scroll(
				function() {
				if(popWindow.is(':visible')){
				    browserScrollTop = $(window).scrollTop();
					browserScrollLeft = $(window).scrollLeft();
					positionLeft = browserWidth / 2 - popWindowWidth / 2
							+ browserScrollLeft;
					positionTop = browserHeight / 2 - popWindowHeight / 2
							+ browserScrollTop;
										//重新設定彈出層的位置,使其位置隨著滾動條滾動改變
					popWindow.css({
						'left' : positionLeft + 'px',
						'top' : positionTop + 'px'
					});
				}
					
				});
 		//當滑鼠點選彈出按鈕時觸發
		oBtn.click(function() {
                        //設定彈出窗的位置
			popWindow.show().animate({
				'left' : positionLeft + 'px',
				'top' : positionTop + 'px'
			}, 500);
			//頁面增加遮罩層
			$('body').append(maskDiv);
			//設定遮罩層的寬高
			$(".maskDiv").width(masWidth).height(masHeight);
			//設定遮罩層的樣式
			$(".maskDiv").css({
						'left' : '0px',
						'top' :  '0px',
						'z-index' : '1',
						'position' : 'absolute',
						'opacity' : '0.4',
						'height' : masHeight + 'px',
						'width' : masWidth + 'px',
						'background-color' : 'black'
					}); //也可以在css中定義
			
		});
		//當滑鼠點選關閉時觸發
		close.click(function() {
			//隱藏彈出層,還原彈出層的位置
			popWindow.hide().animate({
				'left' : '0px',
				'top' : '0px'
			}, 0);
			//將遮罩層程式碼從頁面中刪除
			$(".maskDiv").remove();
		});
	});
</script>
</head>
<body style="width:2000px">
	<br />
	<a href="javascript:;" id="show">顯示視窗</a>

	<div class="popWindow hide">
		<h3>
			彈出視窗的標題<span>關閉</span>
		</h3>
		<div class="content" id="content">彈出視窗的內容</div>
	</div>
</body>
</html>

css部分:
.popWindow{  
      
    width:500px;/* 設定彈出視窗的寬度 */  
    height:500px;/* 設定彈出視窗的高度 */  
    background-color: buttonface;  
    left:0px;  
    top:0px;  
    position: absolute;/* 設定彈出視窗為絕對定位,這樣後面設定位置才會起效 */  
    z-index: 2;  
}  
.popWindow h3{/* 設定彈出視窗的標題欄的樣式 */  
    height:30px;  
    line-height:30px;  
    margin:0;  
    padding:0;  
}  
.hide{/* 隱藏 彈出視窗DIV*/  
    display: none;  
}  
.popWindow h3 span{  
    float: right;  
    font-size: 14px;  
    font-weight:bold;  
    cursor: pointer;  
    margin-right: 5px;  
}  
.popWindow h3 span:HOVER{  
    color: red;  
}  
.popWindow .popWindowcontent{  
    height: 470px;  
    background-color:white;  
}  
/* 設定遮罩層的樣式,如果在這裡設定則js中設定css樣式部分可以省去 */  
.maskDiv{  
    background-color: black;  
    opacity:0.4;  
    position: absolute;  
    top: 0px;  
    left: 0px;  
    z-index: 1;  
}  
不要忘記引入jquery.js,如果有疑問可以留言哈~!