js实现楼层导航功能


Posted in Javascript onFebruary 23, 2017

图如下所示:

js实现楼层导航功能

1.点击跳转到相应区域:

页面scroll掉的距离 = 目标板块在文档中的垂直坐标 - 起始板块(目标位置)到视图顶部的距离;

document.body.scrollTop = scrollLength; 

document.documentElement.scrollTop = scrollLength;

2.滚动滚动条时对应的导航链接被激活

每个板块的导航链接对应一个长度区间,当滚动条滚动调的长度落在该区间时,该导航条则被选中。区间范围为当前板块的scrollTop值(包含)~下一板块的ScrollTop值(不包含)。

例如:第一板块的区间为0~第二板块的scrollTop值(即第一板块的高度),当滚动条滚动的距离落在该区间时,则第一个链接激活。

如何确定区间?将链接倒叙排列,依次循环判断,第一个(滚动条滚动的距离>区间最小值)成立的链接即为激活链接。

var currIndex=0;
window.onscroll = function () {
var $cptop = $('.cp-top');

var scrollLength = document.documentElement.scrollTop || document.body.scrollTop; //滚动条滚动的距离

var list_area = _.map($('#area li.group'), function (item, index) {



return { top: item.offset().top, index: index };
 
}); //所有的板块
 
list_area = _.sortBy(list, function (item) { return -item.index; }); //倒序

var reachedArea = _.find(list_area, function (item) {
 

return scrollLength >= item.top;
 
});

//滚动的距离大于该区间的最小top值

if (currIndex != reachedArea.index) {



currIndex = reachedArea.index;



$(".navField li").removeClass('selected');



$(".navField li").eq(reachedField.index).addClass('selected');

}
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
ExtJS 2.0实用简明教程 之Ext类库简介
Apr 29 Javascript
js脚本获取webform服务器控件的方法
May 16 Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
Bootstrap源码学习笔记之bootstrap进度条
Dec 24 Javascript
js实现功能比较全面的全选和多选
Mar 02 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
微信小程序 select 下拉框组件功能
Sep 09 Javascript
手把手带你入门微信小程序新框架Kbone的使用
Feb 25 Javascript
jQuery实现B2B网站后台管理系统侧导航
Jul 08 jQuery
Javascript call及apply应用场景及实例
Aug 26 Javascript
详解Vite的新体验
Feb 22 Javascript
jQuery点击头像上传并预览图片
Feb 23 #Javascript
jQuery事件与动画基础详解
Feb 23 #Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 #Javascript
解析Vue2.0双向绑定实现原理
Feb 23 #Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
Feb 23 #Javascript
js获取浏览器和屏幕的各种宽度高度
Feb 22 #Javascript
基于JS实现移动端向左滑动出现删除按钮功能
Feb 22 #Javascript
You might like
PHP与SQL注入攻击[三]
2007/04/17 PHP
也谈php网站在线人数统计
2008/04/09 PHP
php 正则 过滤html 的超链接
2009/06/02 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
2013/11/26 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
Three.js快速入门教程
2016/09/09 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
Vue组件化开发思考
2018/02/02 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Python迭代器和生成器介绍
2015/03/06 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
实习教师个人的自我评价
2013/11/08 职场文书
保险经纪人求职信
2014/03/11 职场文书
赔偿协议书范本
2014/04/15 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
浅谈如何保证Mysql主从一致
2022/03/13 MySQL