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 相关文章推荐
js鼠标左右键 键盘值小结
Jun 11 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
Mar 07 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
Apr 01 Javascript
Mac/Windows下如何安装Node.js
Nov 22 Javascript
JS执行删除前的判断代码
Feb 18 Javascript
2014 HTML5/CSS3热门动画特效TOP10
Dec 07 Javascript
AngularJs解决跨域问题案例详解(简单方法)
May 19 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
vue单页缓存方案分析及实现
Sep 25 Javascript
vue 中url 链接左边的小图标更改问题
Dec 30 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 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实现搜索相似图片
2015/09/22 PHP
PHP实现的多进程控制demo示例
2019/07/22 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
PHP时间类完整代码实例
2021/02/26 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
JavaScript简介
2015/02/15 Javascript
jQuery实现的漂亮表单效果代码
2015/08/18 Javascript
详解javascript遍历方式
2015/11/11 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
python在指定目录下查找gif文件的方法
2015/05/04 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
斯洛伐克家具和时尚装饰品购物网站:Butlers.sk
2019/09/08 全球购物
大专毕业自我鉴定
2014/02/04 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python
2022漫威和DC电影上映作品
2022/04/05 欧美动漫