jq锚点定位平滑跳转和导航跟随页面滚动并定位到相应位置,导航高亮显示

在做项目的过程中碰到的问题,一开始还很顺利,在编写父子导航时出现了问题,经过研究,终于解决。

  1. 关于锚点定位,我们通常都是a标签写上#id名字,然后在目标上写上id名字。然而我采用的不是这种,而且利用自定义属性来设置,然后来获取里面的#id。
  2. 平滑跳转其实很简单,就是利用jq中animate(),然后计算高度,获取id元素所处的位置
  3. 效果如下:

在这里插入图片描述
部分代码如下:

$(function () {
	$('#directory li').click(function () {
		$('html,body').animate({
			//90代表页面导航条占据的高度,具体根据需求来改变
			scrollTop: ($($(this).children().attr('data-cata-target')).offset().top) - 90
		}, 1000);
		return false;
	});
})
  1. 导航跟随页面滚动并定位到相应位置导航高亮显示,我们需要先计算出导航条的条数,用length来计算
var num = $('#directory li').length;
  1. 然后计算出各个定位位置距离窗口的高度,最后就是让其对应的导航名高亮显示。代码如下:
$(window).scroll(function () {
	for (i = 0; i < num; i++) {
	    //120是根据具体要求来算的,可改变,这里获取得到各个定位位置距离窗口的高度
		if ($(document).scrollTop() + 120 >= $('#head' + i).offset().top) {
		    //然后设置高亮
			$('#directory li .cata').removeClass('cata-on')
			$('#directory li .cata').eq(i).addClass('cata-on');
		}
	}
	return false;
})

最后完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值