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表单验证代码
Aug 02 Javascript
基于jQuery的投票系统显示结果插件
Aug 12 Javascript
js查找某元素中的所有图片地址的方法
Jan 16 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
判断访客终端类型集锦
Jun 05 Javascript
Bootstrap选项卡与Masonry插件的完美结合
Jul 06 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
js 递归和定时器的实例解析
Feb 03 Javascript
AngularJS 异步解决实现方法
Jun 12 Javascript
Spring Boot/VUE中路由传递参数的实现代码
Mar 02 Javascript
vue使用swiper实现中间大两边小的轮播图效果
Nov 24 Javascript
vue-socket.io接收不到数据问题的解决方法
May 13 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截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php explode函数实例代码
2012/02/27 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
2018/02/01 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
python utc datetime转换为时间戳的方法
2019/01/15 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
Python读取YAML文件过程详解
2019/12/30 Python
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
中学清明节活动总结
2014/07/04 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
nginx实现发布静态资源的方法
2021/03/31 Servers
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python