定时器轮播图

发布于:2022-12-02 ⋅ 阅读:(442) ⋅ 点赞:(0)

效果

在这里插入图片描述

  <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/wallpaper1.jpg" alt="" />
  </div>
  <div class="slider-footer">
    <p>对人类来说会不会太超前了?</p>
    <ul class="slider-indicator">
      <li class="active"></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <div class="toggle">
      <button class="prev">&lt;</button>
      <button class="next">&gt;</button>
    </div>
  </div>
</div>
      // 1. 初始数据
      const sliderData = [
      { url: './images/wallpaper1.jpg', title: '对人类来说会不会太超前了?' },
      { url: './images/wallpaper2.jpg', title: '开启剑与雪的黑暗传说!' },
      { url: './images/wallpaper3.jpg', title: '真正的出现了!' },
      { url: './images/wallpaper4.jpg', title: '人生如梦,一樽还酹江月' },
    ]
    //获取元素
    const img = document.querySelector('.slider-wrapper img')
    const title = document.querySelector('.slider-footer p')
    //开启定时器
    let i =0
    setInterval(function(){
      i++
      if(i >= sliderData.length){
        i=0
      }
      //更改图片路径
      img.src = sliderData[i].url
      //更改文字路径
      title.innerHTML = sliderData[i].title
      document.querySelector('.slider-indicator .active').classList.remove('active')
      document.querySelector(`.slider-indicator li:nth-child(${i+1})`).classList.add('active')
    },2000)

js解析

1.首先获取图片和文字的dom对象。再设定一个用来计数的i,写间歇函数,让i在函数内自加,这样的话就可以遍历对象,取到对应的图片和文字。在i++后设定当i等于存对象的数组长度时把i设为0.就实现了从最后一张图到第一张图的跳转。
2.在间歇函数内获取li的dom对象,使用子代选择器实现选取到不同的li,并用classList.remove删除在添加active之前旧的active。classList.add()添加active


网站公告

今日签到

点亮在社区的每一天
去签到