jquery实现的让超出显示范围外的导航自动固定屏幕最顶上


Posted in Javascript onSeptember 22, 2011

其实实现起来并不难,我们先把实现流程大致想一下,首先,如果导航在显示范围内,就不用做修改。当导航超出显示范围,也就是导航距离屏幕顶部的距离小于0的时候,我们要让它浮动在屏幕顶上,然后大于0的时候,进行一个复原操作,原理就是这么简单,大致看下效果图吧
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上

$().ready(function(){ 
//导航距离屏幕顶部距离 
var _defautlTop = $("#navigator").offset().top - $(window).scrollTop(); 
//导航距离屏幕左侧距离 
var _defautlLeft = $("#navigator").offset().left - $(window).scrollLeft(); 
//导航默认样式记录,还原初始样式时候需要 
var _position = $("#navigator").css('position'); 
var _top = $("#navigator").css('top'); 
var _left = $("#navigator").css('left'); 
var _zIndex = $("#navigator").css('z-index'); 
//鼠标滚动事件 
$(window).scroll(function(){ 
if($(this).scrollTop() > _defautlTop){ 
//IE6不认识position:fixed,单独用position:absolute模拟 
if($.browser.msie && $.browser.version=="6.0"){ 
$("#top").css({'position':'absolute','top':eval(document.documentElement.scrollTop),'left':_defautlLeft,'z-index':99999}); 
//防止出现抖动 
$("html,body").css({'background-image':'url(about:blank)','background-attachment':'fixed'}); 
}else{ 
$("#navigator").css({'position':'fixed','top':0,'left':_defautlLeft,'z-index':99999}); 
} 
}else{ 
$("#navigator").css({'position':_position,'top':_top,'left':_left,'z-index':_zIndex}); 
} 
}); 
});

没有太多好讲的,需要注意的一点就是,IE6不认识position:fixed,需要用position:absolute去模拟,然后实时计算出top的值,另外需要给html和body加两个样式,防止滚动的时候出现抖动,具体可以了解《完美解决IE6不支持position:fixed的bug》。

另外需要注意的一点就是,导航的宽度必须是固定值,不能是auto或者100%因为fixed和absolute都不认识,当然你也可以手动获取到导航的宽度,然后写到浮动导航样式里,不过有个前提,导航原先样式里不能有:position:relative,情况可能比较多,最简单的方法还是把导航宽度定死。

以上代码可以复制复制到后台设置的HTML页脚代码里,如果遇到浮动导航宽度出问题了,就参考我刚才做的处理办法解决吧。

Javascript 相关文章推荐
防止动态加载JavaScript引起的内存泄漏问题
Oct 08 Javascript
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
jquery ajax 调用失败的原因示例介绍
Sep 27 Javascript
jQuery截取指定长度字符串的实现原理及代码
Jul 01 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
jquery判断密码强度的验证代码
Apr 22 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
Feb 23 Javascript
jQuery使用ajax跨域获取数据的简单实例
May 18 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
May 26 Javascript
再谈javascript常见错误及解决方法
Sep 16 Javascript
浅析JS中对函数function的理解(基础篇)
Oct 14 Javascript
JavaScript事件委托实现原理及优点进行
Aug 29 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 #Javascript
extjs 初始化checkboxgroup值的代码
Sep 21 #Javascript
基于jquery的一个拖拽到指定区域内的效果
Sep 21 #Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 #Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
Sep 21 #Javascript
Dom操作之兼容技巧分享
Sep 20 #Javascript
js获取图片大小的函数代码
Sep 20 #Javascript
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
vue操作动画的记录animate.css实例代码
2019/04/26 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
Python实现批量读取word中表格信息的方法
2015/07/30 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
教师实习自我鉴定
2013/12/11 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
财务会计专业求职信
2014/06/09 职场文书
加强作风建设工作总结
2014/10/23 职场文书
初中教师德育工作总结2015
2015/05/12 职场文书
大学入学感言
2015/08/01 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
2022年四月新番
2022/03/15 日漫