section1
当前位置:首页 > 日记 > 正文

Javascript实现页面滚动时导航智能定位

Javascript实现页面滚动时导航智能定位

常见的开发页面中可能会有这么一个需求,页面中会有多个模块,每个模块对应一个导航,当页面滚动到某个模块时,对应的模块导航需要加上一个类用于区分当前用户所浏览区域。

假设结构如下:

<div class="container">  <div class="wrapper">    <div class="section" id="section1">section1</div>    <div class="section" id="section2">section2</div>    <div class="section" id="section3">section3</div>    <div class="section" id="section4">section4</div>    <div class="section" id="section5">section5</div>  </div>  <nav>    <a href="#section1" rel="external nofollow" class="current">section1</a>    <a href="#section2" rel="external nofollow" >section2</a>    <a href="#section3" rel="external nofollow" >section3</a>    <a href="#section4" rel="external nofollow" >section4</a>    <a href="#section5" rel="external nofollow" >section5</a>  </nav></div>

页面滚动时导航定位

js代码如下:

var $navs = $('nav a'),          // 导航  $sections = $('.section'),       // 模块  $window = $(window),  navLength = $navs.length - 1;  $window.on('scroll', function() {  var scrollTop = $window.scrollTop(),    len = navLength;  for (; len > -1; len--) {    var that = $sections.eq(len);    if (scrollTop >= that.offset().top) {       $navs.removeClass('current').eq(len).addClass('current');       break;    }  }});

效果如下:

不难看出,基本原理就是在window滚动的时候,依次将模块从后向前遍历,如果window的滚动高度大于或等于当前模块的距页面顶部的距离,则将当前模块对应的导航突出显示,并且不再继续遍历

点击导航定位页面

除了这种需求外,还有另一种需求,就是点击导航定位到导航所对应模块的顶部。

代码如下:

$navs.on('click', function(e) {  e.preventDefault();  $('html, body').animate({    'scrollTop': $($(this).attr('href')).offset().top  }, 400);});

效果如下:

以上基本上满足了业务的基本需求,这是工作中总结的经验,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

ES6扩展运算符的用途实例详解

ES6扩展运算符的用途实例详解

扩展,运算符,详解,实例,用途,ES6的扩展运算符可以说是非常使用的,在给多参数函数传参,替代Apply,合并数组,和解构配合进行赋值方面提供了很好的便利性。扩展运算符就是三个点“...”,就是将实现了Iterator 接口的对象中的每个元素都一个个的迭代…

excel2010图表制作滚动条控件的方

excel2010图表制作滚动条控件的方

图表,滚动条,方法,控件,电脑软件,  在Excel中制作好图表之后经常需要用到滚动条控件,具体该如何制作滚动条控件呢?下面是由小编分享的excel2010图表制作滚动条控件的方法,以供大家阅读和学习。excel2010图表制作滚动条控件的方法图表制作滚…

详解微信小程序 登录获取unionid

详解微信小程序 登录获取unionid

登录,详解,程序,电脑软件,微信小,详解微信小程序 登录获取unionid首先公司开发了小程序, 公众号网页和app等, 之前都是用的openid来区分用户, 但openid只能标识用户在当前小程序或公众号里唯一, 我们希望用户可以在公司各个产品(比如公众号…

冻结2007excel表格前三行的方法步

冻结2007excel表格前三行的方法步

冻结,步骤,多列,方法,表格,  excel2007中,冻结功能是一个经常使用的功能,它能随意冻结一些行或列。下面让小编为你带来学习冻结excel表格前三行的方法,希望对你有帮助!了解更多excel表格的操作技巧,欢迎点击▼▼▼  ???excel表格设置打印A4…

jQuery实现可拖动进度条实例代码

jQuery实现可拖动进度条实例代码

拖动,实例代码,进度条,电脑软件,jQuery,html   <div class="progress"> <div class="progress_bg"> <div class="progress_bar"></div> </div> <div class="progress_btn"></div> <div class="text">0%</div> </d…

qq旋舞搞笑个性签名

qq旋舞搞笑个性签名

个性签名,搞笑,大全,电脑软件,qq,  一句搞笑个性签名:话是人说的,屁也是人放的,说话和放屁一样,都是一口气而已。下面小编给大家分享了关于qq旋舞搞笑个性签名,希望你喜欢。qq旋舞搞笑个性签名大全1) 哎呦我去,您这么忙还亲自上厕所那。2) 遇到…

ppt2013 删除背景的方法

ppt2013 删除背景的方法

方法,删除,背景,电脑软件,  记得以前上初中时,小编就很喜欢powerpoint里的一个设置图片背景透明的功能,可以将纯色背景的图片去掉背景,已经不记得那是哪个版本了。如今,电脑上装的已经是2013,当时的功能已经变成了&lsquo;删除背景&rsquo;,而且…

微信小程序 页面传值详解

微信小程序 页面传值详解

页面传值,详解,程序,电脑软件,微信小,微信小程序 页面传值详解一. 跨页面传值.1 . 用 navigator标签传值或 wx.navigator, 比如这里将good_id=16 参数传入detail页面, 然后detail页面的 onload方法内接受.如果需要传多个参数, 用 & 链接即…

QQ音乐设置铃声的方法手机QQ音乐怎

QQ音乐设置铃声的方法手机QQ音乐怎

音乐,设置,方法,音效,铃声,  通过手机QQ音乐,可以设置自己喜欢的音乐做铃声了。那么应该如何设置呢?那接下来就随小编一起来看看QQ音乐设置铃声的方法吧!点击下方查看更多手机QQ音乐相关内容&darr;&darr;&darr;  ?&hearts;?&hearts;手机Q…

excel 2007界面改2003界面教程exce

excel 2007界面改2003界面教程exce

界面,教程,标识,不同之处,怎么改,  在Excel2007中,界面改版比较大,有很多用户不习惯用07版本的,因此可能需要改变07版本的界面,下面是小编带来的关于excel 2007界面改2003界面教程的内容,欢迎阅读!excel 2007界面改2003界面教程怎样将Excel 20…

怎样给WPS演示2013设置自动保存时

怎样给WPS演示2013设置自动保存时

设置自动,演示,时间,电脑软件,WPS,  有时候我们费尽心血完成制作,却因为小小的失误而导致文档损坏或者是丢失,没有来得及保存,这种绝望。设置WPS演示2013自动保存,可以防止类似的事情发生。以下是小编为您带来的关于给WPS演示2013设置自动保…

2013版ppt怎样将相册导出为视频

2013版ppt怎样将相册导出为视频

方法,视频,电脑软件,ppt,  我们在ppt中完成电子相册的制作后,可以将其导出为视频文件,这有利于文件的保存,下面就让小编告诉你怎样将ppt2013相册导出为视频 的方法,希望看完本教程的朋友都能学会并运用起来。ppt2013相册导出为视频的方法使用…

软件日记