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 相关文章推荐
三种检测iPhone/iPad设备方向的方法
Apr 23 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
详解JavaScript中数组的相关知识
Jul 29 Javascript
Node.js重新刷新session过期时间的方法
Feb 04 Javascript
Backbone中View之间传值的学习心得
Aug 09 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
javascript 判断用户有没有操作页面
Oct 17 Javascript
Angular6新特性之Angular Material
Dec 28 Javascript
webpack的tree shaking的实现方法
Sep 18 Javascript
js实现九宫格布局效果
May 28 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生成xml简单实例代码
2009/12/16 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
JS重要知识点小结
2011/11/06 Javascript
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
Vue+axios 实现http拦截及路由拦截实例
2017/04/25 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
让python json encode datetime类型
2010/12/28 Python
用python登录Dr.com思路以及代码分享
2014/06/25 Python
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python获取服务器信息的最简单实现方法
2015/03/05 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
python浪漫表白源码
2019/04/05 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
美国休闲服装品牌:Express
2016/09/24 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
教师岗位职责
2013/11/17 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers