轮播图计时与随机数

时间:2024-10-26 15:15:39

下面将介绍2种(不是方法!!!)

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8" />

  <meta http-equiv="X-UA-Compatible" content="IE=edge" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />

  <title>轮播图点击切换</title>

  <style>

    * {

box-sizing: border-box;

    }

    .slider {

      width: 560px;

      height: 400px;

      overflow: hidden;

    }

    .slider-wrapper {

      width: 100%;

      height: 320px;

    }

    .slider-wrapper img {

      width: 100%;

      height: 100%;

      display: block;

    }

    .slider-footer {

      height: 80px;

      background-color: rgb(100, 67, 68);

      padding: 12px 12px 0 12px;

      position: relative;

    }

    .slider-footer .toggle {

      position: absolute;

      right: 0;

      top: 12px;

      display: flex;

    }

    .slider-footer .toggle button {

      margin-right: 12px;

      width: 28px;

      height: 28px;

      appearance: none;

      border: none;

      background: rgba(255, 255, 255, 0.1);

      color: #fff;

      border-radius: 4px;

      cursor: pointer;

    }

    .slider-footer .toggle button:hover {

      background: rgba(255, 255, 255, 0.2);

    }

    .slider-footer p {

      margin: 0;

      color: #fff;

      font-size: 18px;

      margin-bottom: 10px;

    }

    .slider-indicator {

      margin: 0;

      padding: 0;

      list-style: none;

      display: flex;

      align-items: center;

    }

    .slider-indicator li {

      width: 8px;

      height: 8px;

      margin: 4px;

      border-radius: 50%;

      background: #fff;

      opacity: 0.4;

      cursor: pointer;

    }

    .slider-indicator li.active {

      width: 12px;

      height: 12px;

      opacity: 1;

    }

  </style>

</head>

<body>

  <div class="slider">

    <div class="slider-wrapper">

      <img src="./images/slider01.jpg" alt="" />

    </div>

    <div class="slider-footer">

      <p>对人类来说会不会太超前了?</p>

      <ul class="slider-indicator">

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

        <li></li>

      </ul>

      <div class="toggle">

        <button class="prev">&lt;</button>

        <button class="next">&gt;</button>

      </div>

    </div>

  </div>

 // 第一种轮播图随机数

 <script>

    // 1. 初始数据

    const sliderData = [

      { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },

      { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },

      { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },

      { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },

      { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },

      { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },

      { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },

      { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },

    ]



//第一种:生成随机数

    // 2.获取DOM对象

    const img = document.querySelector('.slider-wrapper>img')

    const pp = document.querySelector('.slider-footer>p')

    const bg = document.querySelector('.slider-footer')



    // 2.1 随机数  生成一个随机数  0-7

    let num = Math.floor(Math.random()*7)

    // 修改元素

    img.src = sliderData[num].url

    pp.innerHTML = sliderData[num].title

    bg.style.backgroundColor = sliderData[num].color

    // 切换,从1切到2,先删除所有active,在逐一添加

    const lis = document.querySelectorAll('.slider-footer>ul>li')

    console.log(lis)

    for (let i = 0; i< lis.length; i++) {

      lis[i].classList.remove('actove')

    }

    console.log(lis)

    // 为当前需要高亮的小圆点添加active类名

    lis[num].classList.add('active')

    let s = 0

    let time = setInterval(function(){

      s++

      lis.innerHTML = sliderData

    }, 1000);

  </script>

</body>

</html>

// 第二种轮播图计时

   // 2.获取DOM对象
    const img = document.querySelector('.slider-wrapper>img')
    const pp = document.querySelector('.slider-footer>p')
    const bg = document.querySelector('.slider-footer')
    const lis = document.querySelectorAll('.slider-footer>ul>li')

    let s = 0
    let time = setInterval(function(){

      //要让它等于最后一张图的下标,才在到最后一张图的时候停止
          if(s === sliderData.length-1){
              clearInterval(time)
              return
          }

          s++
          img.src = sliderData[s].url
          pp.innerHTML = sliderData[s].title
          bg.style.backgroundColor = sliderData[s].color

          for (let i = 0; i < sliderData.length; i++) {
            lis[i].classList.remove('active')
          }
          lis[s].classList.add('active')

          // if(s===7) s=-1  当秒数到 7 时,切换为0 

    },1000);