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 07 Javascript
JavaScript的作用域和块级作用域概念理解
Sep 21 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
简介JavaScript中的push()方法的使用
Jun 09 Javascript
如何通过js实现图片预览功能【附实例代码】
Mar 30 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
js事件源window.event.srcElement兼容性写法(详解)
Nov 25 Javascript
EasyUI Combobox设置默认值 获取text的方法
Nov 28 Javascript
JS实现图片垂直居中显示小结
Dec 13 Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 jQuery
AngularJS折叠菜单实现方法示例
May 18 Javascript
vue-resource调用promise取数据方式详解
Jul 21 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
jquery 页面全选框实践代码
2010/04/02 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
JavaScript实现获取两个排序数组的中位数算法示例
2019/02/26 Javascript
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
python脚本实现验证码识别
2018/06/07 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
职工趣味运动会方案
2014/02/10 职场文书
自荐信的格式
2014/03/10 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
校长新学期寄语2016
2015/12/04 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
iPhone13再次曝光
2021/04/15 数码科技
用python开发一款操作MySQL的小工具
2021/05/12 Python
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL