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 脚本将当地时间转换成其它时区
Mar 19 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
May 13 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
jQuery实现带滚动线条导航效果的方法
Jan 30 Javascript
浅谈JavaScript中的Math.atan()方法的使用
Jun 14 Javascript
JS日程管理插件FullCalendar中文说明文档
Feb 06 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
Feb 10 Javascript
JS实现点击链接切换显示隐藏内容的方法
Oct 19 Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
JS获取月的第几周和年的第几周实例代码
Dec 05 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 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函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
php长字符串定义方法
2012/07/12 PHP
php变量范围介绍
2012/10/15 PHP
php实现文件下载代码分享
2014/08/19 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
JavaScript字符串对象
2017/01/14 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
Vue 理解之白话 getter/setter详解
2019/04/16 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
Python入门篇之面向对象
2014/10/20 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python线程安全及多进程多线程实现方法详解
2019/09/27 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
自我介绍演讲稿
2014/01/15 职场文书
《太阳》教学反思
2014/02/21 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
宣传普通话标语
2014/06/27 职场文书
爱心捐书活动总结
2014/07/05 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
材料采购员岗位职责
2015/04/03 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
pandas中DataFrame检测重复值的实现
2021/05/26 Python
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle