您的位置:首页 > Web前端 > JavaScript

Js效果:楼层跳跃

2018-01-22 19:54 218 查看
个人博客新地址:→点我♪(^∀^●)ノ



实现思路

通过scroll的距离来判断当前的展示区域属于哪一个楼层

布局

Html

<ul class="nav">
<li>享受品质</li>
<li>服饰美妆</li>
<li>家电手机</li>
<li>电脑数码</li>
<li>3C运动</li>
</ul>
<ul class="content">
<li>享受品质</li>
<li>服饰美妆</li>
<li>家电手机</li>
<li>电脑数码</li>
<li>3C运动</li>
</ul>


CSS

<style>
*{margin:0;padding:0;}
li{
list-style: none;
color: #FFFFFF;
}
.nav{
position: fixed;
left: 15px;
top: 80px;
}
.nav li{
width: 70px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 14px;
cursor: pointer;
background: #666;
color: #FFFFFF;
}
.nav .now{
background: lightcoral;
}
html, body{
height: 100%;
}
ul{
height: 500%;
}
.content li{
height: 20%;
font: 100px "Microsoft YaHei";
text-align: center;
}

</style>


JS实现

<script>
var navLiArr = $('ul')[0].children;
var contentLiArr = $('ul')[1].children;

//给每个不同楼层添加不同的颜色
var colorArr = ['lightgreen','lightseagreen','lightskyblue',
'lightgray','lightyellow'];

for (var i=0; i<contentLiArr.length;i++){
contentLiArr[i].style.background = colorArr[i];
}
// 点击转到对应的楼层
for (var i=0;i<navLiArr.length;i++){
navLiArr[i].index=i;
navLiArr[i].onclick=click;
}

function click () {
//改变样式
var parent=this.parentNode;
parent.isclick=true;
for(var j = 0; j <navLiArr .length; j++ ){
navLiArr[j].className='';
}
this.className='now';
var dis=this.index*document.body.offsetHeight*1;
clearInterval(window.timer);
window.timer=setInterval(function () {
var pos=(dis-scroll().top)/10;
pos=pos>0?Math.ceil(pos):Math.floor(pos);
window.scrollTo(0,scroll().top+pos);
if(dis==scroll().top){
clearInterval(window.timer);
parent.isclick=false;
}
})

}

window.onscroll=function (ev) {
// console.log(ev)
if(!navLiArr[0].parentNode.isClick){
//滚动到相应板块  改变样式
//获取滚动距离 scroll()。top
var dis=document.body.offsetHeight;
var topDis=scroll().top;
var t=topDis/dis;
//t 与 navLiArr[i].index 比较
t=Math.round(t);
console.log(t);
for(var k = 0; k <navLiArr .length; k++ ){
navLiArr[k].className='';
}
navLiArr[t].className='now';
}
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JS JS效果