如何用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 相关文章推荐
JS比较两个时间大小的简单示例代码
Dec 20 Javascript
js数组去重的方法汇总
Jul 29 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 Javascript
微信小程序 实例应用(记账)详解
Sep 28 Javascript
JavaScript 实现的checkbox经典实例分享
Oct 16 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
BetterScroll 在移动端滚动场景的应用
Sep 18 Javascript
关于jquery中attr()和prop()方法的区别
May 28 jQuery
微信小程序之几种常见的弹框提示信息实现详解
Jul 11 Javascript
浅谈JS中几种轻松处理'this'指向方式
Sep 16 Javascript
vue3.0中使用postcss-pxtorem的具体方法
Nov 20 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中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
js有序数组的连接问题
2013/10/01 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python通过正则表达式选取callback的方法
2015/07/18 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python操作csv文件实例详解
2017/07/31 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
python切割图片的示例
2020/11/12 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
值传递还是引用传递
2015/02/08 面试题
给排水专业应届生求职信
2013/10/12 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
经济纠纷起诉状
2015/05/20 职场文书
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android