楼层滚动(JQ)

html:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<link rel="stylesheet" href="css/base.css">
	<style>
		#header,#f1,#f2,#f3{
			width: 80%;
			height: 500px;
			background: yellow;
			margin-left: 10%;
			margin-top: 50px;
		}
		#f1{
			background: green;
		}
		#f2{
			background: red;
		}
		#f3{
			background: blue;
		}
		#lift{
			position: fixed;
			top: 280px;
			display: none;
		}
		.lift_btn{
			display: inline-block;
			width: 50px;
			height: 50px;
			border: 1px solid #000;
		}
		.hover{
			background: red;
		}
	</style>
</head>
<body>
	<div id="header"></div>
	<div class="floor" id="f1">
		<p>第一层</p>
	</div>
	<div class="floor" id="f2">
		<p>第二层</p>
	</div>
	<div class="floor" id="f3">
		<p>第三层</p>
	</div>
	<div id="lift">
		<ul>
			<li class="lift_item">
				<a href="javascript:;" class="lift_btn">
					<span>1</span>
				</a>
			</li>
			<li class="lift_item">
				<a href="javascript:;" class="lift_btn">
					<span>2</span>
				</a>
			</li>
			<li class="lift_item">
				<a href="javascript:;" class="lift_btn">
					<span>3</span>
				</a>
			</li>
		</ul>
	</div>

	<script src="js/jquery.min.js"></script>
	<script src="js/floor.js"></script>
</body>
</html>

js:

(()=>{
	var $lift=$("#lift");
	$(window).scroll(()=>{
		var scrollTop=$('html,body').scrollTop();
		var $f1=$("#f1");
		var offsetTop=$f1.offset().top;
		if(offsetTop<scrollTop+innerHeight/2)
			$lift.fadeIn(500);
		else
			$lift.fadeOut(500);
		var $floors=$(".floor");
		$floors.each((i,elem)=>{
			var $f=$(elem);
			if($f.offset().top<scrollTop+innerHeight/2)
				$lift.find(".lift_item:eq("+i+")").addClass("hover").siblings().removeClass("hover");
		});
	});

	$lift.children("ul").on("click","li",function(){
		var $li=$(this);
		var i=$li.index();
		var $fi=$(".floor:eq("+i+")");
		var offsetTop=$fi.offset().top;
		$("html").animate({
			scrollTop:offsetTop-60
		},500)
	})
})();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值