jQuery 智能判断跟随页面滚动的导航

福利:阿里云服务器-全场景 首次购买ECS享实例首台5折限时领取红包

现在很多网站的副导航都具有智能判断跟随页面滚动的效果:默认情况下,导航是安静的跟随页面流自动布局的;当页面向下滚动,移动到导航部位时,导航就会自动附着在页面顶部。

举个例子,京东的商品介绍页中的Tab切换部分,就是这样的效果。截图如下:(穿越到京东智能跟随页面滚动的导航-截图于京东

制作这个效果,大概思路是这样的:

1、默认情况下,导航部分是自动布局的;

2、当页面滚动,通过js判断页面滚动的距离是否超过导航距离顶部的高度。如果超过,则让导航附着在页面顶部;如果没超过,则还是自动布局。

3、还剩下一个问题,让导航附着在页面顶部:IE6以上的浏览器可以采用fixed定位在浏览器顶部,IE6则采用absolute相对于页面顶部来定位。

 

以下是基于jQuery的代码:

 

$(function(){
	//获取导航距离页面顶部的距离
	var toTopHeight = $("#nav").offset().top;
	
	//监听页面滚动
	$(window).scroll(function() {
		//判断页面滚动超过导航时执行的代码
		if( $(document).scrollTop() > toTopHeight ){
			//检测是否为IE6。jQuery1.9中去掉了msie的方法,所以只好这样写
			if ('undefined' == typeof(document.body.style.maxHeight)) {
				//页面滚动的距离
				var scrollTop = $(document).scrollTop();
				//IE6下,用absolute定位,并设置Top值为距离页面顶部的距离
				$("#nav").css({'position':'absolute','top':scrollTop+'px'});
			}else{
				//IE6以上浏览器采用fixed定位
				$("#nav").addClass("nav_fixed");
			}
		}else{//判断页面滚动没有超过导航时执行的代码
			if ('undefined' == typeof(document.body.style.maxHeight)) {
				//设置Top值为导航距页面顶部的初始值。(IE6为了防止浏览器一下滚动过多,所以不能采用直接去掉定位的方法)
				$("#nav").css({'position':'absolute','top':toTopHeight+'px'});
			}else{
				//IE6以上浏览器移除fixed定位,采用默认流布局
				$("#nav").removeClass("nav_fixed");
			}
		}
	});
});

.nav_fixed{position:fixed;top:0;}

 

这里做了一个简单的DEMO效果:智能判断跟随页面滚动的导航

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值