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十个最常用的自定义函数(中文版)
Sep 07 Javascript
JavaScript学习点滴 call、apply的区别
Oct 22 Javascript
按钮JS复制文本框和表格的代码
Apr 01 Javascript
拥抱模块化的JavaScript
Mar 07 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
Dec 28 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 Javascript
js中class的点击事件没有效果的解决方法
Oct 13 Javascript
基于JavaScript实现的顺序查找算法示例
Apr 14 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
浅谈React Event实现原理
Sep 20 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
我的论坛源代码(二)
2006/10/09 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
python删除特定文件的方法
2015/07/30 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
Flask数据库迁移简单介绍
2017/10/24 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
python使用Tesseract库识别验证
2018/03/21 Python
python getpass模块用法及实例详解
2019/10/07 Python
Python之Class&Object用法详解
2019/12/25 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
python datetime处理时间小结
2020/04/16 Python
python 爬虫爬取京东ps4售卖情况
2020/12/18 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
运动会入场解说词
2014/02/07 职场文书
纠风工作实施方案
2014/03/15 职场文书
《泉水》教学反思
2014/04/11 职场文书
中秋节活动总结
2014/08/29 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
工作态度不好检讨书
2015/05/06 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis