[Jquery]网页定位导航特效

时间:2024-08-18 21:05:32

描述:左右联动的导航,非常适合展示页面内容多,区块划分又很明显的,点击右边固定导航项时,左边的内容跟着切换。滑动滚动条的时候,右边的导航也随着左边的展示而进行高亮切换。

思路:比较滚动距离和楼层距离(相对于顶部),如果滚动距离大于等于楼层距离,即进入了相应楼层,然后通过一个变量来记录该楼层的信息,最后传递给右边高亮显示

1.点击右边固定导航项时,左边的内容跟着切换。

只需将右边a的href设置为左边区块的id加上#即可

2.滑动滚动条的时候,右边的导航也随着左边的展示而进行高亮切换。

$(function(){
    $(window).on("scroll",function(e){
        var $floor=$("li[id^=floor]");
        var $nav=$(".mui-lift-nav");
        var floorId="";
        var scrollTop=$(this).scrollTop();
        $floor.each(function(index,Ele){       //index是每个楼层的索引,Ele是每个楼层节点的dom元素对象(这个对象是原生对象,不是jquery对象)
            var offsetTop=$(Ele).offset().top;   //Ele给它一层封装,必须加个美元符号,才能把它转换为jquery对象
            if(scrollTop>=offsetTop){
                floorId="#"+$(this).attr("id");
            }else{
                return false;
            }
        });
        $nav.filter("[href="+floorId+"]").addClass("mui-lift-cur-nav").siblings().removeClass("mui-lift-cur-nav");      //filter方法可以在一个集合里筛选出所要的元素
        if(scrollTop<$floor.first().offset().top ||scrollTop>$floor.last().offset().top+$floor.last().height()){
            $nav.removeClass("mui-lift-cur-nav");
        }
    });        
})