图片轮播图效果js代码

(function () {
  // 轮播图的JS效果

  function startCarousel(carousel){
    // 绑定定时器
    carousel.interval = setInterval(function () {
        // 获取当前激活的指示灯
        let indicator = carousel.querySelector(".carousel-indicators>li.active");
        // 获取当前激活的图片
        let item = carousel.querySelector(".carousel-inner-item.active");
        // 取消激活
        indicator.classList.remove('active');
        item.classList.remove('active');
        // 获取需要激活的指示灯
        let nextIndicator = indicator.nextElementSibling ?? indicator.parentElement.firstElementChild;
        // 获取需要激活的图片
        let nextItem = item.nextElementSibling ?? item.parentElement.firstElementChild;
        // 激活
        nextIndicator.classList.add('active');
        nextItem.classList.add('active');

    }, 1000);
  }

  // 获取轮播图的标签元素
  let carousels = document.querySelectorAll(".carousel");
  // 给每个轮播图分别绑定事件
  carousels.forEach((carousel) => {
    // 给指示灯绑定事件
    let indicators = carousel.querySelectorAll(".carousel-indicators>li");
    indicators.forEach((indicator, index) => {
        // 绑定鼠标进入事件
      indicator.addEventListener("mouseenter", function () {
        // 清除定时器
        clearInterval(carousel.interval);
        // 把当前激活指示灯的修改为未激活
        let activeIndicator = carousel.querySelector(
          ".carousel-indicators>li.active"
        );
        activeIndicator.classList.remove("active");
        // 把自己激活
        this.classList.add("active");

        // 把当前激活图片的修改为未激活
        let activeItem = carousel.querySelector(".carousel-inner-item.active");
        activeItem.classList.remove("active");
        // 激活对应的图片
        carousel
          .querySelector(`.carousel-inner-item:nth-child(${index + 1})`)
          .classList.add("active");
      });
      // 绑定鼠标离开事件
      indicator.addEventListener('mouseleave',function(){
        startCarousel(carousel);
      });
    });


    startCarousel(carousel);

  });
})();

原文地址:http://www.cnblogs.com/jackchen1928/p/16874995.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性