使用JavaScript实现楼层导航的方法及过程是什么
Admin 2022-06-24 群英技术资讯 476 次浏览
<div id="box" class="box"> <ul class="list"> <li class="content-part" data-n="栏目一">栏目一</li> <li class="content-part" data-n="栏目二">栏目二</li> <li class="content-part" data-n="栏目三">栏目三</li> <li class="content-part" data-n="栏目四">栏目四</li> <li class="content-part" data-n="栏目五">栏目五</li> </ul> </div> <div class="left"> <ul id="left-list"> <li data-n="栏目一">栏目一</li> <li data-n="栏目二">栏目二</li> <li data-n="栏目三">栏目三</li> <li data-n="栏目四">栏目四</li> <li data-n="栏目五">栏目五</li> </ul> </div>
<style> * { margin: 0; padding: 0; } body .box { width: 1200px; } body .box { margin: 0 auto; } ul { list-style: none; } body .box ul li { height: 800px; background-color: silver; margin-bottom: 20px; font-size: 30px; font-weight: bold; } body .left { position: fixed; left: 20px; bottom: 100px; width: 100px; height: 250px; top: 50%; margin-top: -125px; background-color: silver; } body .left ul li { height: 50px; line-height: 50px; text-align: center; cursor: pointer; } body .current { color: #fff; background-color: tomato; } </style>
点击左侧菜单中的楼层按钮对应跳转到相应的楼层。
var oList = document.getElementById('left-list'); // 点击事件委托 oList.onclick = function (e) { if (e.target.tagName.toLowerCase() == 'li') { // 取data-n值 var n = e.target.getAttribute('data-n'); // []属性选择器 var contentPart = document.querySelector('.content-part[data-n=' + n + ']'); // 设置卷动 document.documentElement.scrollTop = contentPart.offsetTop; } }
楼层监听,页面卷动时,左侧菜单中的楼层栏目背景随之变化。
// 页面卷动时,左侧盒子栏目背景随之变化 var contents = document.querySelectorAll('.content-part'); var lis = document.querySelectorAll('#left-list li'); var offsetTopArr = []; for (var i = 0; i < contents.length; i++) { offsetTopArr.push(contents[i].offsetTop); } // 为了方便比较,追加无穷大 offsetTopArr.push(Infinity); // 监听卷动 var nowFloor = -1; window.onscroll = function (e) { var nowScrollTop = document.documentElement.scrollTop; // break的i值即为盒子数组下标 for (var i = 0; i < offsetTopArr.length; i++) { if (nowScrollTop >= offsetTopArr[i] && nowScrollTop < offsetTopArr[i + 1]) { break; } } // 楼层不等,进行样式更改 if (nowFloor != i) { nowFloor = i; for (var j = 0; j < lis.length; j++) { if (j == i) { // 当前楼层添加样式 lis[j].className = 'current'; } else { // 去掉其他楼层的样式 lis[j].className = ''; } } } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家详细介绍了vue实现页面缓存功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
目录1 计算属性实现模糊查询2 watch 监听实现模糊查询3 通过按钮点击实现模糊查询1 计算属性实现模糊查询vue 中通过计算属性实现模糊查询,创建 html 文件,代码直接放入即可。这里自己导入 vue,我是导入本地已经下载好的。script src=./lib/vue-2.6.12.js/script演示:打开
目录Axios与proxy反向代理1、Axios 的特性2、Axios 的安装3、Axios 与proxy反向代理的使用axios反向代理proxy个人理解使用反向代理proxy的原因proxy基本配置Axios与proxy反向代理Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.j
这篇文章主要为大家详细介绍了vue实现列表固定列滚动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要思路在需要拖拽宽度的区域设置一个div,高度设为 100%,宽度尽量窄一些(也不要太窄,3~6px左右)在此div上绑定当“鼠标按下”时,触发document绑定“鼠标移动”方法和鼠标抬起方法通过鼠标移动方法不断获取当前鼠标位置,设置需要变化大小div的宽高。鼠标抬起时取消鼠标移动方法和鼠标抬起方法的绑定。temp
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008