如何用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笔记(一)
Nov 11 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
Mar 18 Javascript
js 获取元素下面所有li的两种方法
Apr 14 Javascript
JS、CSS以及img对DOMContentLoaded事件的影响
Aug 12 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
鼠标悬停小图标显示大图标
Jan 22 Javascript
浅谈JavaScript中的this指针和引用知识
Aug 05 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
JS 实现微信扫一扫功能
Sep 14 Javascript
浅探express路由和中间件的实现
Sep 30 Javascript
基于ajax实现上传图片代码示例解析
Dec 03 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不用正则验证真假身份证
2013/11/06 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
AutoSave/自动存储功能实现
2007/03/24 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
Vue使用json-server进行后端数据模拟功能
2018/04/17 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
layui使用label标签的方法
2019/09/14 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python将音频进行变速的操作方法
2020/04/08 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
企业治理工作自我评价
2013/09/26 职场文书
自动化专业本科毕业生求职信
2013/10/20 职场文书
小学中秋节活动方案
2014/02/06 职场文书
入党推优材料
2014/06/02 职场文书
公司给客户的感谢信
2015/01/23 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
常用的Python代码调试工具总结
2021/06/23 Python