这几天做一个页面,用到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>