为什么我的代码只会跑一遍

来源:6-2 无缝连续滚动特效

DanielDu87

2022-08-15 15:06:24

<!doctype html>
<html lang="zh">
   <head>
      <meta charset="UTF-8">
      <title>document</title>
      <link href="" rel="stylesheet">
   </head>
   <style>
      * {
         margin: 0;
         padding: 0;
      }
      
      .box {
         /*overflow: hidden;*/
         width: 1250px;
         height: 130px;
         margin: 10px auto;
         border: 10px solid red;
         background-color: orange;
      }
      
      ul {
         /*设置相对定位才能使用left控制位置*/
         position: relative;
         width: 3000px;
         height: 150px;
         margin: 0 auto;
      }
      
      ul li {
         float: left;
         margin-right: 10px;
         list-style: none;
      }
      
      ul li:last-child {
         margin-right: 0;
      }
   </style>
   <body>
      <div class="box">
         <ul>
            <li><img alt="" src="../images/number/0.png"></li>
            <li><img alt="" src="../images/number/1.png"></li>
            <li><img alt="" src="../images/number/2.png"></li>
            <li><img alt="" src="../images/number/3.png"></li>
            <li><img alt="" src="../images/number/4.png"></li>
            <li><img alt="" src="../images/number/5.png"></li>
         </ul>
      </div>
      <script>
         var ul_box = document.querySelector("ul");
         //克隆一份
         ul_box.innerHTML += ul_box.innerHTML;
         //全局变量,表示当前ul_box的left值
         var ul_left = 0;
         //定时器
         var timer;
         
         //动画封装成函数
         function move() {
            //设表先关
            clearInterval(timer);
            timer = setInterval(function () {
               //每次移动的宽度:向左移动10*20px
               ul_left -= 10;
               //判断是否到达最右边
               ul_box.style.left = ul_left + "px";
               if (ul_left <= -1260) {
                  //如果到达最右边,将left值设置为0
                  ul_box.style.left = "0";
               }
            }, 20);
         }
         
         //开始动画
         move();
         
         // 鼠标进入停止;
         ul_box.onmouseenter = function () {
            clearInterval(timer);
         };
         
         //鼠标离开继续定时器
         ul_box.onmouseleave = function () {
            //定时器代码放入函数
            move();
         };
      </script>
   </body>
</html>


写回答

1回答

imooc_慕慕

2022-08-15

同学你好,解答如下:

当验收的时候,将设置的全局变量ul_left设置为0,不是将ul元素的left值设置为0;修改参考如下:

https://img.mukewang.com/climg/62f9f3850912ab7604670110.jpg

祝学习愉快~

0
hmooc_慕慕
回复
hanielDu87
hp>同学你好,同学理解的很对,很棒,祝学习愉快~

h022-08-15
共3条回复

0 学习 · 17877 问题

查看课程