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 相关文章推荐
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
Feb 15 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
Mar 18 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
网页右下角弹出窗体实现代码
Jun 05 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
Apr 13 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
Bootstrap风格的WPF样式
Dec 07 Javascript
认识less和webstrom的less配置方法
Aug 02 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
Nov 17 Javascript
npm 下载指定版本的组件方法
May 17 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
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
修改发贴的编辑功能
2007/03/07 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
JS window对象的top、parent、opener含义介绍
2013/12/03 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
Python多进程原理与用法分析
2018/08/21 Python
Python列表list排列组合操作示例
2018/12/18 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Python调用.NET库的方法步骤
2019/12/27 Python
python 常见的排序算法实现汇总
2020/08/21 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
使用HTML5的Notification API制作web通知的教程
2015/05/08 HTML / CSS
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
网络教育自我鉴定
2013/11/01 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
体育活动总结
2015/02/04 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang