1. 程式人生 > >使用JQ完成div滑動到一個位置開始固定

使用JQ完成div滑動到一個位置開始固定

這幾天做一個頁面,用到div滑動到一定的位置然後固定,查找了好久的資料才解決,這裡做一個總結。 下面我會貼出程式碼,程式碼中會詳細解釋,如果有不懂的可以給我留言。 注:      1、 單純的copy一下程式碼是看不到執行的效果的,需要在第一個div和最後一個div裡面新增足夠多的內容,直到頁面可以出現滾動效果才可以。      2、程式碼唯一要改的地方就是JQ核心檔案和新增足夠的div
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<!--引入JQuery核心js檔案-->
	<script type="text/javascript" src="js/jquery_js/jquery-1.11.3.min.js" ></script>
	<style>
		/*這個css樣式就是固定div的*/
		.sfixed{
			position:fixed;
			top: 1000px;
			left: 0px;
			z-index: 10;
		}
		.scroll{
			margin-left: 200px;
			border: 1px red solid;
			width: 20%;
			height: 10px;
		}
	</style>
	<script>
		$(function(){
//			函式offset()的作用是返回呼叫者當前的位置
//			獲取你所要開始固定的位置
			var top1 = $(".scroll").offset().top;
			$(window).scroll(function(){
//				動態獲取當前頁面的位置
				var win_top = $(this).scrollTop();
//				動態獲取需要固定的div的位置
				var top = $(".scroll").offset().top;
//				把當前頁面位置和要固定div的位置想對比
//				如果頁面位置大於等於需要固定的div位置說明此時需要固定了,只需要給它新增一個css樣式即可
				if(win_top >= top){
					$(".scroll").addClass("sfixed");
				}
				//把當前頁面位置和要固定div的位置想對比
//				如果頁面位置小於需要固定的div位置說明此時不需要固定,只需要給它移除之前新增的css樣式即可
				if(win_top < top1){
					$(".scroll").removeClass("sfixed");
				}	
			});
		});
		
	</script>
	<body>
		<div class="top">
			<div>
				內容1
			</div>
		</div>
		<div class="scroll">
			<!--這是需要固定的部分-->			
		</div>
		<div class="bottom">
			<div>
				內容1
			</div>
		</div>
	</body>
</html>