如何用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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
基于JQuery的6个Tab选项卡插件
Sep 03 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
Aug 15 Javascript
js+css实现文字散开重组动画特效代码分享
Aug 21 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
JS未跨域操作iframe里的DOM
Jun 01 Javascript
VueJs使用Amaze ui调整列表和内容页面
Nov 30 Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
Aug 28 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
JS中一些高效的魔法运算符总结
May 06 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
Terran历史背景
2020/03/14 星际争霸
php实现三级级联下拉框
2016/04/17 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
Smarty模板配置实例简析
2019/07/20 PHP
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
python 中的int()函数怎么用
2017/10/17 Python
Python实现一个简单的验证码程序
2017/11/03 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
关于python中remove的一些坑小结
2021/01/04 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
经典c++面试题五
2014/12/17 面试题
进程的查看和调度分别使用什么命令
2015/03/25 面试题
年终晚会主持词
2014/03/25 职场文书
岗位竞聘书范文
2014/03/31 职场文书
学生退学证明
2015/06/23 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers
tree shaking对打包体积优化及作用
2022/07/07 Java/Android