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 12 Javascript
基于JQuery框架的AJAX实例代码
Nov 03 Javascript
javascript 打印内容方法小结
Nov 04 Javascript
有关DOM元素与事件的3个谜题
Nov 11 Javascript
js获取图片大小的函数代码
Sep 20 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
js图片轮播手动切换效果
Nov 10 Javascript
如何去除vue项目中的#及其ie9兼容性
Jan 11 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
Nov 28 Javascript
JavaScript中BOM对象原理与用法分析
Jul 09 Javascript
vue使用swiper实现中间大两边小的轮播图效果
Nov 24 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
Sep 18 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
PHP链表操作简单示例
2016/10/15 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
护理专业毕业生推荐信
2013/10/31 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
竞选班委演讲稿
2014/04/28 职场文书
英语专业自荐书
2014/06/13 职场文书
优秀党员申报材料
2014/12/18 职场文书
煤矿安全保证书
2015/02/27 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书