1. 程式人生 > >實戰Jquery(四)--標簽頁效果

實戰Jquery(四)--標簽頁效果

server 積累 jquery對象 tar eal ria 融合 tom 廣告

? ? ? ? 這兩天完畢了實戰四五六的樣例,實例四是標簽頁的實現方法,實例五是級聯菜單下拉框,實例六是窗體效果,都是web層經常使用的效果.越到後面越發認為技術這東西,就是一種思路的展現,懂了要實現效果的來龍去脈,代碼就是表達的一種工具,後臺展示的是邏輯,前臺展現的是圖形.

? ? ? ? 說一下這個標簽頁吧,第一個標簽由兩部分組成,鼠標移到上面標簽上,以下相應顯示相應的內容.借助CSS實現標簽和內容相融合的效果.這次我們先看終於效果.

技術分享圖片

HTML:

<span style="font-size:18px;"><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<link type="text/css" rel="stylesheet" href="tab.css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="tab.js"></script>

<title>標簽頁效果</title>
</head>
<body>
	<ul id="tabfirst">
		<li class="tabin">標簽1</li>
		<li>標簽2</li>
		<li>標簽3</li>
	</ul>
	<div class="contentin contentfirst">我是內容1</div>
	<div class="contentfirst">我是內容2</div>
	<div class="contentfirst">我是內容3</div>
</body>	</span>

CSS:

<span style="font-size:18px;">ul,li{
	margin:0;
	padding:0;
	list-style:none;
	
}
#tabfirst li{
	float:left;
	background-color:#000066;
	color:white;
	margin-right:3px;
	padding:5px;
	border:1px solid white;
}
#tabfirst li.tabin{
	background-color:#000066;
	border:1px solid #000066;
	
}
div.contentfirst{
	clear:left;
	background-color:#000066;
	color:white;
	padding:10px;
	width:300px;
	height:100px;
	display:none;
}
div.contentin{
	display:block;
}</span>

? ? ? ? 值得一提的是,非常多時候我們的鼠標滑過,並非要改變當前的內容,而是不小心或者不註意碰到了鼠標,怎樣解決這一bug呢,jQuery的強大再次上演.不錯,我們使用了setTimeout函數,運行時,在加載後延遲指定時間再去運行表達式,這樣就能夠避免每次滑動都改變內容的漏洞.

JS代碼:

<span style="font-size:18px;">var timeoutId;
$(document).ready(function(){
		$("li").each(function(index){
			//每個包裝li的jQuery對象都會運行function中的代碼
			//index是當前運行這個function的li相應在全部li組成的數組中的索引值
			
			$(this).mouseover(function(){
				var liNode=$(this);
				timeoutId=setTimeout(function(){
					//將原來顯示的內容區域進行隱藏
					 $("div.contentin").removeClass("contentin");
					//清除有tabin的li標簽的tabin的class
					 $("li.tabin").removeClass("tabin");
					 //當前標簽所相應的內容區域顯示出來
					 $("div").eq(index).addClass("contentin");
					 $(liNode).addClass("tabin");
				},300);
				
			}).mouseout(function(){
				clearTimeout(timeoutId);	
			});
		
	    });
});</span>

? ? ? ? 第二個標簽有所不同,是在單擊之後,內容區加載相應的頁面,加載過程中與server交互須要等待時間,所以實現了"裝載中"的友好提示效果.並且,內容區不同於上面的三個div,而是採用了一個div塊,通過加載不同內容就可以.

技術分享圖片

HTML:

<span style="font-size:18px;"><ul id="tabsecond">
		<li class="tabin">裝入完整頁面</li>
		<li>裝入部分頁面</li>
		<li>從遠程獲取數據</li>
	</ul>
	<div id="contentsecond">
		<img alt="裝載中" src="images/img-loading.gif" />
		<div id="realcontent"></div>
	</div></span>

CSS:

<span style="font-size:18px;">#tabsecond li{
	float:left;
	color:blue;
	background-color:white;
	margin-right:2px;
	padding:5px;
	cursor:pointer;
	}
#tabsecond li.tabin{
	background-color:#F2F6FB;
	border:1px solid black;
	border-bottom:0;
	z-index:10;
	position:relative;/*使用z-index前提,position為relative或absolute*/
}
#contentsecond{
	width:350px;
	height:150px;
	padding:10px;
	background-color:#f2f6fb;
	clear:left;
	border:1px solid black;
	position:relative;
	top:-1px;
}
img{
	display:none;
}</span>

JS:

<span style="font-size:18px;">//在整個頁面裝入完畢後,標簽效果2的內容區域須要裝入靜態的html頁面內容
		$("#contentsecond").load("tabLoad.html");
		//找到標簽2效果相應的三個標簽,註冊鼠標點擊事件
		$("#tabsecond li").each(function(index){
			$(this).click(function(){
				$("#tabsecond li.tabin").removeClass("tabin");
				$(this).addClass("tabin");
				if (index==0){
					//裝入靜態完整頁面
					$("#contentsecond").load("tabLoad.html");
				}else if (index==1){
					//裝入動態部分頁面
					$("#contentsecond").load("tabLoad.jsp");
				}else if(index==2){
					//裝入遠程數據(這裏也是一個動態頁面輸出的數據)
					$("#contentsecond").load("tabData.jsp");
				}
			});
		});
		//對於loading圖片綁定Ajax請求開始和交互結束的事件
		$("#contentsecond img").bind("ajaxStart",function(){
			//把div裏面的內容情況
			$("#realcontent").html("");
			//整個頁面中隨意Ajax交互開始前,function中的內容會被運行
			$(this).show();
		}).bind("ajaxStop",function(){
			//整個頁面中隨意Ajax交互結束後,function內容會被運行
			$(this).hide();
		});</span>

jQuery的使用在興許項目中加強吧,現在再看到網頁上各種各樣的彈窗,廣告之類的特效都不覺奇妙了,事實上非常多東西你開始知道了就非常快掌握了,慢慢積累自己的代碼庫,見的越多,寫的越多,技術也就越高超! jQuery就寫到這裏,ajax也該實現了.









實戰Jquery(四)--標簽頁效果