如何用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 相关文章推荐
JavaScript 高级语法介绍
Jun 15 Javascript
将CKfinder整合进CKEditor3.0的新方法
Jan 10 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
Feb 23 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
js获取指定日期周数以及星期几的小例子
Jun 27 Javascript
js实现checkbox全选、不选与反选的方法
Feb 09 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
Aug 17 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
node app 打包工具pkg的具体使用
Jan 17 Javascript
javascript实现移动端上传图片功能
Aug 18 Javascript
jQuery-App输入框实现实时搜索
Nov 19 jQuery
终于实现了!精彩的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
在DC的漫画和电影中,蝙蝠侠的宿敌,小丑的真名是什么?
2020/04/09 欧美动漫
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php xml-rpc远程调用
2008/12/19 PHP
Wordpress php 分页代码
2009/10/21 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
PHP创建/删除/复制文件夹、文件
2016/05/03 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Python常用列表数据结构小结
2014/08/06 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
python几种常用功能实现代码实例
2019/12/25 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
python实现交并比IOU教程
2020/04/16 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
小学校园之星事迹材料
2014/05/16 职场文书
医院节能减排方案
2014/06/13 职场文书
早读课迟到检讨书
2014/09/25 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
入党群众意见范文
2015/06/02 职场文书
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android