js实现整屏滑动效果

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title></title>
   <style>
       * {
           margin: 0;
           padding: 0;
       }


       ul, ol {
           list-style: none;
       }


       html, body, ul, ul li {
           width: 100%;
           height: 100%;
       }


       ol {
           position: fixed;
           top: 50px;
           left: 50px;
       }


       ol li {
           width: 50px;
           height: 50px;
           border: 1px solid #000;
           text-align: center;
           line-height: 50px;
           cursor: pointer;
       }
   </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>
<!--ol>li{$}*5-->
<script>
   var timer = null;
   //var leader = 0;

   var ol = document.getElementsByTagName("ol")[0];
   var olLis = ol.children;
   var ul = document.getElementsByTagName("ul")[0];
   var ulLis = ul.children;


   var arr = ["red", "orange", "yellow", "green", "blue"];
   for (var i = 0; i < arr.length; i++) {
       olLis[i].style.backgroundColor = arr[i];
       ulLis[i].style.backgroundColor = arr[i];
   }


   /*window.onscroll = function () {
       leader = window.pageYOffset;//当前页面被卷去的头部
   };*/




   //给所有的olLis注册点击事件
   for (var j = 0; j < olLis.length; j++) {
       olLis[j].index = j;
       olLis[j].onclick = function () {
           //让窗体滚动到指定位置
           //就是要滚动到 要去的ul 的 offsetTop的值
           //当前点击的是ol中的哪个li 就去到ul中的那个li
           var target = ulLis[this.index].offsetTop;
           //window.scrollTo(0, target);
           //一个渐渐变化的值,引入计时器
           clearInterval(timer);
           timer = setInterval(function () {
               //step = (target - leader) / 10
               //leader = leader + step
               var leader = window.pageYOffset;//当前页面被卷去的头部
               var step = (target - leader) / 10;
               step = step > 0 ? Math.ceil(step) : Math.floor(step);
               leader = leader + step;
               //console.log(leader);
               window.scrollTo(0, leader);
               if (leader === target) {
                   clearInterval(timer);
               }
           }, 20);
       };
   }
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值