<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
header {
width: 100%;
height: 40px;
background: pink;
}
main {
width: 100%;
height: 4500px;
background: cadetblue;
position: relative;
}
.wrap-box {
position: fixed;
top: 40%;
right: 0;
background: rgb(226, 168, 75);
}
.wrap-box p {
padding: 20px;
border-bottom: 1px solid #ccc;
}
.active {
color: red;
}
</style>
</head>
<body>
<header>header</header>
<main>
<div class="wrap-box">
<p>ts</p>
<p>pinia</p>
<p>vite</p>
</div>
<section style="height: 1500px; background: #4066bf;">ts</section>
<section style="height: 1500px; background: #9aae44;">pinia</section>
<section style="height: 1500px; background: #ce3db6;">vite</section>
</main>
</body>
</html>
<script src="./lodash.min.js"></script>
<script>
// 保证资源家在完毕,高度已经撑开
window.onload = () => {
document.addEventListener('scroll', _.throttle(function () {
// 获取文档滚动高度
let top = document.documentElement.scrollTop;
const nodeList = document.querySelectorAll('p');
nodeList.forEach(item => {
item.classList.remove('active');
if (top < 1540) {
nodeList[0].classList.add('active');
} else if (top >= 1540 && top < 3040) {
nodeList[1].classList.add('active');
} else if (top >= 3040) {
nodeList[2].classList.add('active');
}
})
}, 1000));
}
</script>
27、js - 节流案例2:用节流控制页面滚动频次
最新推荐文章于 2024-09-24 18:14:14 发布
该文档展示了一个HTML页面结构,包含一个固定定位的侧边栏,随着页面滚动显示不同内容的激活状态。使用CSS设置了颜色和布局,JavaScript结合Lodash库处理滚动事件,根据滚动位置改变侧边栏中对应内容的高亮。
摘要由CSDN通过智能技术生成