在做项目的过程中碰到的问题,一开始还很顺利,在编写父子导航时出现了问题,经过研究,终于解决。
- 关于锚点定位,我们通常都是a标签写上#id名字,然后在目标上写上id名字。然而我采用的不是这种,而且利用自定义属性来设置,然后来获取里面的#id。
- 平滑跳转其实很简单,就是利用jq中animate(),然后计算高度,获取id元素所处的位置
- 效果如下:
部分代码如下:
$(function () {
$('#directory li').click(function () {
$('html,body').animate({
//90代表页面导航条占据的高度,具体根据需求来改变
scrollTop: ($($(this).children().attr('data-cata-target')).offset().top) - 90
}, 1000);
return false;
});
})
- 导航跟随页面滚动并定位到相应位置导航高亮显示,我们需要先计算出导航条的条数,用length来计算
var num = $('#directory li').length;
- 然后计算出各个定位位置距离窗口的高度,最后就是让其对应的导航名高亮显示。代码如下:
$(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;
})
最后完成。