如何用js实现鼠标向上滚动时浮动导航


Posted in Javascript onJuly 18, 2016

为什么会有这个需求呢?有没有发现在国外的一些网站,当你向上滚动时,导航条浮动在顶部位置。用户如果是想看内容就可以直接点击到达,省去很多拖动的时间,当然返回顶部也是比较容易。但有时候返回顶部这个按钮往往被人忽略了。下面一起来看看代码和演示(引入jQuery 1.9)。

判断鼠标向上滚动,或者向下滚动,可以通过对比用户的上一次滚动的坐标和下一次的坐标,当上一次小于下一次时,即用户在向下滚动,反之,则说明用户在向上滚动。滚动的坐标值可以取窗口的scrollTop。

HTML代码示例

<div id="Jnav">
 <ul class="nav">
 <li><a href="http://caibaojian.com/">WEB前端开发</a></li>
 <li><a href="#">前端开发博客</a></li>
 <li><a href="#">前端开发</a></li>
 <li><a href="#">前端开发</a></li>
 </ul>
</div>

JavaScript代码示例

var $nav = $('#Jnav'), navTop = $nav.offset().top, navH = $nav.outerHeight(),winTop_1=0,winWidth=$(window).width(), holder=jQuery('<div>');
$(window).on('scroll',function(){
 var winTop_2 = $(window).scrollTop();
 holder.css('height',navH);
 //开始浮动,不过不显示
 if(winTop_2>navTop && winWidth>980){
 holder.show().insertBefore($nav);
 $nav.addClass('fixed-nav');
 }else{
 holder.hide();
 $nav.removeClass('fixed-nav');
 }
 //判断鼠标向上滚动,显示出来
 if(winTop_2>winTop_1 && winWidth>980){
 $nav.removeClass('fixed-nav-appear');
 }else if(winTop_2<winTop_1){
 $nav.addClass('fixed-nav-appear');
 }
 winTop_1 = $(window).scrollTop();
})

CSS代码示例

.nav{width:980px; margin:0 auto;}
.nav li{display:inline-block; *display:inline; *zoom:1; margin:0 10px;}
.nav li a{display:block; padding:5px 10px;}
.fixed-nav{
 position: fixed;
 width:100%;
 top:-40px; 
 -webkit-transition: top .5s;
  -moz-transition: top .5s;
  -o-transition: top .5s;
  transition: top .5s;
  -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.1);
  -moz-box-shadow: 0 2px 2px rgba(0,0,0,.1);
  box-shadow: 0 2px 2px rgba(0,0,0,.1);
}
.fixed-nav-appear{top:0;}

 

以上就是怎么用js实现鼠标向上滚动时浮动导航的示例代码,感兴趣可以参考下。

Javascript 相关文章推荐
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
jquery ajax执行后台方法
Mar 18 Javascript
$.ajax返回的JSON无法执行success的解决方法
Sep 09 Javascript
判断及设置浏览器全屏模式
Apr 20 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
JavaScript中的关联数组问题
Mar 04 Javascript
JavaScript节点及列表操作实例小结
Aug 05 Javascript
关于JS中的方法是否加括号的问题
Jul 27 Javascript
jQuery实现发送验证码并60秒倒计时功能
Nov 25 Javascript
JavaScript变量声明var,let.const及区别浅析
Apr 23 Javascript
JavaScript获取某一天所在的星期
Sep 05 Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 #Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
Jul 18 #Javascript
全面介绍javascript实用技巧及单竖杠
Jul 18 #Javascript
Bootstrap 布局组件(全)
Jul 18 #Javascript
js验证真实姓名与身份证号,手机号的简单实例
Jul 18 #Javascript
Bootstrap零基础入门教程(三)
Jul 18 #Javascript
15位和18位身份证JS校验的简单实例
Jul 18 #Javascript
You might like
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python单例模式实例解析
2018/08/28 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
wxPython色环电阻计算器
2019/11/18 Python
Python collections模块的使用方法
2020/10/09 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
What is view? why do we have view?
2012/06/22 面试题
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
二年级学生评语大全
2014/04/23 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
2016教师校本培训心得体会
2016/01/08 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫