如何用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中的height innerHeight outerHeight区别示例介绍
Jun 15 Javascript
JavaScript将数组转换成CSV格式的方法
Mar 19 Javascript
jquery插件格式实例分析
Jun 16 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
js实现移动端导航点击自动滑动效果
Jul 18 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 Javascript
值得收藏的八个常用的js正则表达式
Oct 19 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
微信 jssdk 签名错误invalid signature的解决方法
Jan 14 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 Javascript
openlayers实现地图弹窗
Sep 25 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统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
你必须知道的Javascript知识点之&quot;深入理解作用域链&quot;的介绍
2013/04/23 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
2017/01/21 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
HTML的select控件美化
2017/03/27 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
总经理秘书的岗位职责
2013/12/27 职场文书
幼儿园春游活动方案
2014/01/19 职场文书
小学生环保演讲稿
2014/04/25 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
教师节主题班会方案
2015/08/17 职场文书
js实现上传图片到服务器
2021/04/11 Javascript
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL