全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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);
});

效果如下:

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


# js导航锚点滚动效果  # javascript  # 锚点定位  # js锚点定位  # 滚动  # 导航  # js阻止移动端页面滚动的两种方法  # 解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法  # js网页侧边随页面滚动广告效果实现  # 基于AngularJS实现页面滚动到底自动加载数据的功能  # js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)  # js页面滚动时层智能浮动定位实现(jQuery/MooTools)  # JavaScript实现页面滚动图片加载(仿lazyload效果)  # 原生Js页面滚动延迟加载图片实现原理及过程  # JS实现随页面滚动显示/隐藏窗口固定位置元素  # 原生js实现页面滚动动画  # 会有  # 遍历  # 这是  # 多个  # 大家多多  # 基本原理  # 则将  # 所对应  # 就是在  # nav  # href  # nofollow  # current  # strong  # rel  # br  # external  # class  # brush  # xhtml 


相关文章: 金*站制作公司有哪些,金华教育集团官网?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  网站制作网站,深圳做网站哪家比较好?  购物网站制作公司有哪些,哪个购物网站比较好?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  如何高效配置香港服务器实现快速建站?  建站之星安装后如何自定义网站颜色与字体?  常州企业网站制作公司,全国继续教育网怎么登录?  建站之星如何快速生成多端适配网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  如何用腾讯建站主机快速创建免费网站?  网站制作难吗安全吗,做一个网站需要多久时间?  如何撰写建站申请书?关键要点有哪些?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  如何快速搭建高效香港服务器网站?  宝塔面板创建网站无法访问?如何快速排查修复?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  定制建站是什么?如何实现个性化需求?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Swift中循环语句中的转移语句 break 和 continue  利用JavaScript实现拖拽改变元素大小  实现点击下箭头变上箭头来回切换的两种方法【推荐】  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何获取上海专业网站定制建站电话?  建站之星会员如何解锁更多建站功能?  免费网站制作appp,免费制作app哪个平台好?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  如何用低价快速搭建高质量网站?  建站主机无法访问?如何排查域名与服务器问题  h5在线制作网站电脑版下载,h5网页制作软件?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  建站之星3.0如何解决常见操作问题?  如何在Ubuntu系统下快速搭建WordPress个人网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  如何选择高效响应式自助建站源码系统?  一键网站制作软件,义乌购一件代发流程?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  南京网站制作费用,南京远驱官方网站?  网站制作报价单模板图片,小松挖机官方网站报价?  相册网站制作软件,图片上的网址怎么复制?  如何用虚拟主机快速搭建网站?详细步骤解析  韩国服务器如何优化跨境访问实现高效连接?  建站之星如何修改网站生成路径?  如何通过山东自助建站平台快速注册域名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。