scroll楼层跳跃

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			*{
				padding: 0;
				margin: 0;
			}
			body,html{
				height: 100%;
			}
			ul{
				list-style: none;
				height: 100%;
			}
			ul li{
				height: 100%;
			}
			ol{
				list-style: none;
				position: fixed;
				top:80px;
				left: 50px;
			}
			ol li{
				width: 50px;
				height: 50px;
				text-align: center;
				line-height: 50px;
				border: 1px solid #000000;
				cursor: pointer;
				margin-top: -1px;
			}
		</style>
	</head>
	<body>
		<ul>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>5</li>
		</ul>
		<ol>
			<li>1</li>
			<li>2</li>
			<li>3</li>
			<li>4</li>
			<li>5</li>
		</ol>
		
		<script>
			//scroll封装
			function scroll(){
				if(window.pageYOffset!==undefined){
					var json={
						"top":window.pageYOffset,
						"left":window.pageXOffset
					}
					return json;
				}else if(document.compatMode=="CSS1Compat"){
					var json={
						"top":document.documentElement.scrollTop,
						"left":window.documentElement.scrollLeft
					}
					return json;
				}else{
					var json={
						"top":document.body.scrollTop,
						"left":window.body.scrollLeft
					}
					return json;
				}
			}
			
			var ul=document.getElementsByTagName("ul")[0];
			var ol=document.getElementsByTagName("ol")[0];
			var ulLiArr=ul.children;
			var olLiArr=ol.children;
			var timer=null;
			var target=0;
			var leader=0;
			var arrColor=["pink","blue","green","red","orange"];
			for(var i=0;i<arrColor.length;i++){
				ulLiArr[i].style.backgroundColor=arrColor[i];
				olLiArr[i].style.backgroundColor=arrColor[i];
				olLiArr[i].index = i;
				olLiArr[i].onclick=function(){
					target=ulLiArr[this.index].offsetTop;
					clearInterval(timer);
					timer=setInterval(function(){
						var step=(target-leader)/10;
						step=step>0?Math.ceil(step):Math.floor(step);
						leader=leader+step;
						window.scrollTo(0,leader);
						 if(Math.abs(target-leader)<=Math.abs(step)){
						       window.scrollTo(0,target);
						       clearInterval(timer);
					   }
					},20)
				}
			}
			
			
			window.onscroll=function(){
				leader=scroll().top;
			}
			
			
		</script>
	</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值