在做项目的过程中碰到的问题,一开始还很顺利,在编写父子导航时出现了问题,经过研究,终于解决。
关于锚点定位,我们通常都是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;})
最后完成。