JS使用定时器与事件监听实现轮播图切换功能

yizhihongxing

JS使用定时器与事件监听实现轮播图切换功能,是一个比较常见的前端开发需求,下面是一个完整的攻略:

步骤一:HTML结构

首先,我们需要用HTML搭建轮播图的基本结构。基本上,一个轮播图的结构通常是由一个容器元素,若干个图片轮播元素和若干个轮播导航元素组成的。以下是一个典型的轮播图HTML结构示例:

<div class="slider">
    <div class="slider-wrap">
        <div class="slider-item active">
            <img src="images/1.jpg" alt="轮播图1">
        </div>
        <div class="slider-item">
            <img src="images/2.jpg" alt="轮播图2">
        </div>
        <div class="slider-item">
            <img src="images/3.jpg" alt="轮播图3">
        </div>
        <div class="slider-item">
            <img src="images/4.jpg" alt="轮播图4">
        </div>
    </div>
    <div class="slider-nav">
        <div class="nav-item active"></div>
        <div class="nav-item"></div>
        <div class="nav-item"></div>
        <div class="nav-item"></div>
    </div>
</div>

步骤二:CSS样式

接着,我们需要给轮播图添加一些样式,包括轮播图容器和轮播导航的布局样式、轮播图片的布局样式、轮播图片的切换过渡动画样式等。以下是一个基本的轮播图CSS样式示例:

.slider {
  position: relative;
  width: 500px;
  height: 300px;
  overflow: hidden;
}

.slider-wrap {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: flex-start;
  transition: transform .5s ease-in-out;
}

.slider-item {
  flex: 0 0 100%;
  width: 100%;
  height: 100%;
}

.slider-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.slider-nav {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  justify-content: center;
  z-index: 999;
}

.nav-item {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: #000;
  margin: 0 5px;
  cursor: pointer;
}

.nav-item.active {
  background-color: #fff;
}

.slider:hover .slider-nav {
  display: none;
}

步骤三:JS代码

最后,在轮播图结构和样式都设置好之后,我们需要使用JS来实现轮播图的切换功能。常用的实现方式有两种:定时器和事件监听。这里我们将介绍这两种方式的具体实现过程:

方式1:使用定时器实现轮播

使用定时器实现轮播图切换的方法,是利用setInterval()函数来实现自动切换图片。当然,我们也可以添加上清除轮播图定时器的逻辑,确保在用户操作轮播图时计时器不会继续执行。以下是一个基本的轮播图定时器实现代码示例:

const sliderWrap = document.querySelector(".slider-wrap");
const sliderItems = document.querySelectorAll(".slider-item");
const navItems = document.querySelectorAll(".nav-item");
const intervalTime = 5000; // 轮播时间间隔 5s
let currentIndex = 0;
let intervalId;

function resetClass() {
  sliderItems[currentIndex].classList.remove("active");
  navItems[currentIndex].classList.remove("active");
}

function changeSlide() {
  resetClass();
  if (currentIndex === sliderItems.length - 1) {
    currentIndex = 0;
  } else {
    currentIndex++;
  }
  sliderWrap.style.transform = `translateX(-${currentIndex * 100}%)`;
  navItems[currentIndex].classList.add("active");
  sliderItems[currentIndex].classList.add("active");
}

function startInterval() {
  intervalId = setInterval(changeSlide, intervalTime);
}

function stopInterval() {
  clearInterval(intervalId);
}

startInterval();

sliderWrap.addEventListener("mouseenter", stopInterval);
sliderWrap.addEventListener("mouseleave", startInterval);

方式2:使用事件监听实现轮播

使用事件监听实现轮播图切换的方法,是利用鼠标单击轮播导航来切换图片。当然,我们也可以添加上判断轮播导航和轮播图片的数量是否一致的逻辑,确保代码的健壮性和兼容性。以下是一个基本的轮播图事件监听实现代码示例:

const sliderWrap = document.querySelector(".slider-wrap");
const sliderItems = document.querySelectorAll(".slider-item");
const navItems = document.querySelectorAll(".nav-item");

function resetClass() {
  sliderItems.forEach((item) => {
    item.classList.remove("active");
  });
  navItems.forEach((item) => {
    item.classList.remove("active");
  });
}

function changeSlide(index) {
  resetClass();
  sliderWrap.style.transform = `translateX(-${index * 100}%)`;
  navItems[index].classList.add("active");
  sliderItems[index].classList.add("active");
}

navItems.forEach((item, index) => {
  item.addEventListener("click", () => {
    changeSlide(index);
  });
});

总结

以上就是我们使用JS使用定时器与事件监听实现轮播图切换功能的完整攻略。在实际项目中,我们还可以继续优化代码、添加上鼠标滑动切换、添加上移动端轮播图等更多交互特效和功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS使用定时器与事件监听实现轮播图切换功能 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • CSS3模拟IOS滑动开关效果

    关于“CSS3模拟iOS滑动开关效果”的攻略,我将按照以下几个方面进行详细的讲解: 基本思路:通过CSS3实现拖拽交互,并根据滑动距离判断滑块当前状态,进而控制滑块颜色、背景等样式,实现类似于iOS系统中的滑动开关的效果。 具体实现步骤:(1)HTML结构定义 <div class="ios-switch"> <inpu…

    css 2023年6月10日
    00
  • css中link和@import的区别分析详解

    CSS中Link和@import的区别分析详解 Link和@import的介绍 Link和@import都是CSS中常用的引用外部样式表的方法。Link是HTML中使用,@import是CSS中使用。 Link通过HTML的head标签引入外部样式表,而@import则是在CSS文件中引入外部样式表。 区别分析 加载方式 Link会在页面加载时同时加载外部样…

    css 2023年6月9日
    00
  • css布局两个button在同父标签中左右两侧分布的方法

    要实现在同一父标签中左右两侧分布两个button的布局,有多种方法可供选择。 下面是两个常用的方法: 方法一:使用float布局 使用float布局可实现左右两侧分布的效果。代码如下: <div class="btns-container"> <button class="left-btn">L…

    css 2023年6月11日
    00
  • 提高网站性能中内容有关的10条原则

    提高网站性能是一个非常重要的话题,越来越多的网站开始关注网站性能的问题。其中,有很多与内容相关的原则可以帮助你提高网站性能。下面是与内容相关的10条原则: 1. 压缩CSS, JS和图片 压缩CSS,JS和图片是一种较为简单但有效的优化方法,可以减小文件大小、降低网络请求的时间。同时,这也是一个容易实现的优化切入点。如下是一个使用Gulp自动化压缩JS和CS…

    css 2023年6月10日
    00
  • Dreamweaver中CSS面板该怎么设置?

    Dreamweaver 是一款流行的网页设计工具,它提供了一个 CSS 面板,用于管理和编辑 CSS 样式。下面是一个完整攻略,包含了如何在 Dreamweaver 中设置 CSS 面板的过程和两个示例说明。 Dreamweaver 中 CSS 面板的设置 步骤一:打开 CSS 面板 首先,我们需要打开 Dreamweaver 中的 CSS 面板。在 Dre…

    css 2023年5月18日
    00
  • css 设置overflow:scroll 滚动条的样式

    要设置一个带有滚动条的元素,可以使用 CSS 属性 overflow。overflow可以接受三种不同的值:visible,hidden和 scroll。 要设置带有滚动条的元素,需要将 overflow 属性设置为 scroll,并将元素的高度和宽度设置成固定值。这样,当内容超出元素的高度或宽度时,就会自动显示滚动条,并且可以使用滚动条来浏览内容。 如果你…

    css 2023年6月10日
    00
  • 左侧固定宽度,右侧自适应宽度的CSS布局

    这里提供一种常见的左侧固定宽度,右侧自适应宽度的CSS布局方法:使用flex布局。 1. flex布局介绍 Flex布局是一种新的布局方式,在CSS3中引入。它可以让容器中的子元素自适应空间,灵活地分配空间以实现更好的布局效果。 Flex布局采用了两种基本的概念:flex容器和flex项目。Flex容器是指将子元素放置在其中的父元素,而Flex项目则是指Fl…

    css 2023年6月10日
    00
  • js仿小米官网图片轮播特效

    下面是JS仿小米官网图片轮播特效的完整攻略。 1. 实现思路 轮播图可以利用 JavaScript 配合 CSS 动画来方式实现。我们可以利用 JavaScript 的定时器 setInterval 来不断地改变图片的位置,同时利用 CSS 的动画为图片添加渐变效果。 具体实现步骤如下: 在 HTML 中添加轮播图的容器,包含各个图片和指示器。 在 CSS …

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部