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 相关文章推荐
javascript 获取元素样式必杀技
May 04 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
JS中检测数据类型的几种方式及优缺点小结
Dec 12 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
Jan 11 Javascript
js实现3d悬浮效果
Feb 16 Javascript
详解vue事件对象、冒泡、阻止默认行为
Mar 20 Javascript
JavaScript运动框架 多物体任意值运动(三)
May 17 Javascript
初识 Vue.js 中的 *.Vue文件
Nov 22 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
Jan 11 Javascript
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
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 URL参数获取方式的四种例子
2014/02/28 PHP
深入分析PHP引用(&)
2014/09/04 PHP
深入理解PHP中的count函数
2016/05/31 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
Windows下用py2exe将Python程序打包成exe程序的教程
2015/04/08 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
Python队列的定义与使用方法示例
2017/06/24 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
python模拟斗地主发牌
2020/04/22 Python
Python爬虫教程知识点总结
2020/10/19 Python
HTML5 实战PHP之Web页面表单设计
2011/10/09 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
PHP如何去执行一个SQL语句
2016/03/05 面试题
会计专业大学生求职信范文
2014/01/28 职场文书
小学教师师德反思
2014/02/03 职场文书
2014春晚主持词
2014/03/25 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
华山导游词
2015/02/03 职场文书
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
Java 异步任务计算FutureTask
2022/04/28 Java/Android
python中filter,map,reduce的作用
2022/06/10 Python
spring 项目实现限流方法示例
2022/07/15 Java/Android