web移动端实现点击导航,滑动到网页中的指定位置(JS实现滑动锚点定位)

主要功能:

1.初始页面隐藏导航栏
2.滑动到一定位置导航栏显示
3.滑动到对应模块导航栏对应加上样式
4.有锚点,点击导航栏滑动到对应内容

效果图

在这里插入图片描述
直接上代码

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title></title>
	<script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
	<script type="text/javascript" src="js/v.js" ></script>
	<style>
		*{margin: 0;padding: 0;font-size: 30px;text-align: center;}
		.header{height: 100px;width: 640px;margin: 0 auto; background: #fff;position: fixed;top: 0;left: 0;right: 0;}
		.wrap{width: 640px;margin: 0 auto; height: 300px;background: #33CD00;}
		.wrap-content{width: 640px;margin: 0 auto;}
		
		/*导航栏*/
		.wc-nav{width: 640px; background: #fff;position: fixed; height: 90px;line-height: 90px;top: 85px;font-size: 27px;z-index: 999;opacity: 0;box-shadow: 0px 15px 15px -15px rgb(200 200 200 / 60%);}
		.wn-item{display: flex;justify-content: space-between;align-items: center;margin: 0 30px;}
		.wc-nav a{color: #333;font-weight: bold; text-decoration: none;-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
			-webkit-user-select: none;-moz-user-focus: none;-moz-user-select: none;position: relative;text-shadow:  4px 4px 6px rgba(0,0,0,0.1)}
		.wc-nav a span{position: absolute;top: -20px;right: -34px;font-size: 15px;color:#FF631D;}
		.fixDiv{opacity: 1;}
		.fixDivnone{opacity: 0;}
		
		.wc-nav .active{color:#FF631D;position: relative;}
		.wc-nav .active::before {content: '';height: 3px;width: 60px;border-radius: 3px;background: -webkit-linear-gradient(right,#FE6F1E,#FE8E17);
		  position: absolute;margin-top: 74px;left: 22%;}

		.wcc-list{height: 500px;border: 1px solid red;background: #90EE90;}
		.wrap-foot{height: 1000px;background: #269ABC;width: 640px;margin: 0 auto;}
	</style>
</head>
<body>
	<div class="header">吸顶头部</div>
	<div style="height: 100px;width: 640px;margin: 0 auto;"></div>
	<div class="wrap"></div>
	<!--内容-->
	<div class="wrap-content">
		<!--导航-->
		<div class="wc-nav" id="sort_menus">
			<div class="wn-item">
				<a href="#a" class='active'>限时抢购</a>
				<a href="#b">实惠之选</a>
				<a href="#c">品质之选</a>
				<a href="#d">高端定制</a>
			</div>
		</div>
		<!--内容-->
		<div class="wc-content">
			<!-- 设置暗锚点 -->
			<a name="a" style="position: relative;top: -180px;display: block;height: 0;overflow: hidden;"></a>
			<!--限时抢购-->
			<div id="a1" class="wcc-list wcc-list-item">第一部分内容</div>
			<!-- 设置暗锚点 -->
			<a name="b" style=" position: relative;top: -180px;display: block;height: 0;overflow: hidden;"></a>
			<!--实惠之选-->
			<div id="a2" class="wcc-list" style="background: #78B787;">第二部分内容</div>
			<!-- 设置暗锚点 -->
			<a name="c" style=" position: relative;top: -180px;display: block;height: 0;overflow: hidden;"></a>
			<!--品质之选-->
			<div id="a3" class="wcc-list" style="background: #07BA9F;">第三部分内容</div>
			<!-- 设置暗锚点 -->
			<a name="d" style=" position: relative;top: -180px;display: block;height: 0;overflow: hidden;"></a>
			<!--高端定制-->
			<div id="a4" class="wcc-list" style="background: #808080;">第四部分内容</div>
		</div>
	</div>

	<div class="wrap-foot"></div>
	<script>
		$(window).scroll(function(event){
			checkscroll()
		});
		function checkscroll(){
		    var winPos = $(window).scrollTop()+182; //屏幕位置
		    var NodePos = [$('#a1').offset().top,$('#a2').offset().top,$('#a3').offset().top,$('#a4').offset().top],//提前获取好元素位置
		    length = NodePos .length;
		    if(winPos>=NodePos[0]&&winPos<=NodePos[1]){
		    	$('.wc-nav a').removeClass('active');
		  		$('.wc-nav a:nth-child(1)').addClass('active');
		    }else if(winPos>=NodePos[1]&&winPos<=NodePos[2]){
		    	$('.wc-nav a').removeClass('active');
		  		$('.wc-nav a:nth-child(2)').addClass('active');
		    }else if(winPos>=NodePos[2]&&winPos<=NodePos[3]){
		    	$('.wc-nav a').removeClass('active');
		  		$('.wc-nav a:nth-child(3)').addClass('active');
		    }else if(winPos>=NodePos[3]){
		    	$('.wc-nav a').removeClass('active');
		  		$('.wc-nav a:nth-child(4)').addClass('active');
		    }
		}
		$(function(){
			var scTop=0;//初始化垂直滚动的距离
			$(document).scroll(function(){
			    scTop=$(this).scrollTop();//获取到滚动条拉动的距离
					console.log(scTop);//查看滚动时,垂直方向上,滚动条滚动的距离
			    if(scTop>=200){
			    //核心部分:当滚动条拉动的距离大于等于导航栏距离顶部的距离时,添加指定的样式
			        $("#sort_menus").addClass("fixDiv");
			    }else{
			        $("#sort_menus").removeClass("fixDiv");
			    }
			});
		})
	</script>
</body>
</html>

有什么问题可以在下方留言,共同学习探讨

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值