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 grid取到数据而不显示的解决
Dec 29 Javascript
javascript中2个感叹号的用法实例详解
Sep 04 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
概述VUE2.0不可忽视的很多变化
Sep 25 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
Mar 09 Javascript
vue 登录滑动验证实现代码
Aug 24 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
js笔试题-接收get请求参数
Jun 15 Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
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全局变量和类配合使用深刻理解
2013/06/05 PHP
2014过年倒计时示例
2014/01/31 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
js导航菜单(自写)简单大方
2013/03/28 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
python监控文件或目录变化
2016/06/07 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
python文件操作的简单方法总结
2019/11/07 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
Python如何省略括号方法详解
2020/03/21 Python
浅析Python 序列化与反序列化
2020/08/05 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
开业庆典邀请函
2014/01/08 职场文书
心得体会的写法
2014/09/05 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
小马王观后感
2015/06/11 职场文书
在js中修改html body的样式
2021/11/11 Javascript
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript