粗略demo代码效果:
<style>
ul{
height: 1rem;
background-color: aliceblue;
display: flex;
color: aqua;
width: fit-content;
}
.ulFa{
width: 100vw;
overflow-x: scroll;
}
li{
width: 1rem;
flex: 1;
}
.none{display: none;}
.fixedaa{
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 2;
}
.act{
border: 3px solid;
}
</style>
<div>
<div>dsfjdskfjdksjfkdsj</div>
<div>dsfjdskfjdksjfkdsj</div>
<div>dsfjdskfjdksjfkdsj</div>
<div>dsfjdskfjdksjfkdsj</div>
<div>dsfjdskfjdksjfkdsj</div>
<div>dsfjdskfjdksjfkdsj</div>
<div>dsfjdskfjdksjfkdsj</div>
<div class="ulFa">
<ul id="aa">
<li class="act">111</li>
<li>222</li>
<li>333</li>
<li>44444</li>
<li>5555</li>
<li>6666</li>
<li>777</li>
<li>8888</li>
<li>99999</li>
<li>101010</li>
</ul>
</div>
<ul class="bb none"></ul>
<div id="content">
<div class="ayaya" id="type">
<div class="ggg">
<p>111111111111和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>22222222222222和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>333333333333和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>444444444444和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>55555555555555和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>66666666666和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>77777777777和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>88888888888888和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>999999999999和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
<div class="ggg">
<p>10101010和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
<p>和v绝对是发到手机恢复大师积分返回的是返回的数据回复的数据返回的是发生的纠纷好的双方的</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">
var contTopList = [],
ceiling = $('#aa').offset().top,
antiShaking = 1
curNav = 0;
var abc = document.querySelector('#aa').clientHeight
$('.ggg').each(function(i) {
contTopList.push($(this).position().top - abc);
});
var len = contTopList.length;
let timer = null
$('ul li').on('click', function() {
let index = $(this).index()
$(this).addClass('act').siblings().removeClass('act')
antiShaking = 0
$('html,body').animate({scrollTop:$('.ggg').eq(index).offset().top-abc},300);
timer = setTimeout(() => {
antiShaking = 1
timer = null
},300)
})
window.addEventListener('scroll',function () {
var _scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if(ceiling <= _scrollTop){
$('#aa').addClass('fixedaa')
$('.bb').removeClass('none')
}else{
$('#aa').removeClass('fixedaa')
$('.bb').addClass('none')
}
if(antiShaking == 1){
for (var i = 0; i < len; i++) {
if (_scrollTop < contTopList[i]) {
changeNav(0);
break;
} else if (_scrollTop >= contTopList[len - 1]) {
changeNav(len - 1);
break;
} else if (_scrollTop > contTopList[i - 1] && _scrollTop < contTopList[i + 1]) {
changeNav(i);
break;
}
}
}
})
function changeNav(index) {
if (index != curNav) {
let ui = index+1
$('li:nth-child('+ ui +')').addClass('act').siblings().removeClass('act')
}
curNav = index;
}
function compare(a,b,c) {
if(a <= b && b <= c){
return true
}
return false
}
</script>