javascript实现跑马灯轮播图制作

272 阅读1分钟
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      .carousel {
        width: 650px;
        height: 360px;
        border: 1px solid #000;
        margin: 50px auto;
        position: relative;
        overflow: hidden;
      }
      .carousel ul {
        list-style: none;
        width: 6000px;
        position: relative;
        left: 0px;
        transition: left 0.5s ease 0s;
      }
      .carousel ul li {
        float: left;
      }
      .carousel .leftbtn {
        position: absolute;
        left: 20px;
        top: 50%;
        margin-top: -25px;
        width: 50px;
        height: 50px;
        background-color: rgb(28, 180, 226);
        border-radius: 50%;
      }
      .carousel .rightbtn {
        position: absolute;
        right: 20px;
        top: 50%;
        margin-top: -25px;
        width: 50px;
        height: 50px;
        background-color: rgb(28, 180, 226);
        border-radius: 50%;
      }
    </style>
  </head>
  <body>
    <div class="carousel">
      <ul id="list">
        <li><img src="images/beijing/0.jpg" alt="" /></li>
        <li><img src="images/beijing/1.jpg" alt="" /></li>
        <li><img src="images/beijing/2.jpg" alt="" /></li>
        <li><img src="images/beijing/3.jpg" alt="" /></li>
        <li><img src="images/beijing/4.jpg" alt="" /></li>
        <li><img src="images/beijing/0.jpg" alt="" /></li>
      </ul>
      <a href="javascript:;" class="leftbtn" id="leftbtn"></a>
      <a href="javascript:;" class="rightbtn" id="rightbtn"></a>
    </div>
  </body>
  <script>
    // 最后一张结束,能看到第一张

    // 点击右侧按钮的时候,ul的left变成负数
    var ul = document.getElementById("list");
    var rightButton = document.getElementById("rightbtn");
    var lefttButton = document.getElementById("leftbtn");

    // 定义一个最开始的位置
    var currentLeft = 0;
    // 不要每一次点击都很快就执行,要等上一次的执行完了,点击才会执行
    var lock = false;

    // 操作右侧按钮
    rightButton.onclick = function () {
      if (lock) {
        return;
      }
      lock = true;
      // 点完最后,不要有空白,ul要回到之前的最开始的位置
      if (currentLeft == -3250) {
        ul.style.transition = "none";
        currentLeft = 0;
      }
      //   点击一次,left往左边跑一次
      currentLeft -= 650;
      ul.style.left = currentLeft + "px";
    };

//    如果进来就要动,意思是进来就相当于点了右箭头,并且是每隔2秒点击一次
    setInterval(() => {
      rightButton.onclick();
    }, 2000);
 // 不能一直不能点(一直上锁)
    // 加一个间隔执行函数
    setInterval(function () {
      lock = false;
    }, 500);

    // 操作左侧按钮
    lefttButton,
      (onclick = function () {
        if (lock) {
          return;
        }
        lock = true;
        // 点完最后,不要有空白,ul要回到之前的最开始的位置
        if (currentLeft == 0) {
          ul.style.transition = "none";
          currentLeft = -3250;
        }
        //   点击一次,left往左边跑一次
        currentLeft += 650;
        ul.style.left = currentLeft + "px";
      });
  </script>
</html>