纯JavaScript实现轮播图

纯 JavaScript 实现轮播图

轮播图是网页中常见的交互组件,通常用于展示图片或广告。本文将介绍如何使用纯 JavaScript 实现一个简单的轮播图,并深入探讨其中的实现原理。

实现思路

我们的轮播图需要能够自动播放、手动切换图片、支持无限循环、具有过渡效果等功能。为了实现这些功能,我们需要做以下几步:

  1. 创建图片容器和按钮容器,并将它们添加到页面中。
  2. 加载图片,并在图片加载完成后将其添加到图片容器中。
  3. 设置定时器,在规定的时间间隔内自动切换图片。
  4. 监听按钮点击事件,手动切换图片。
  5. 支持无限循环,即在最后一张图片和第一张图片之间切换。
  6. 添加过渡效果,使图片切换更加平滑。

代码实现

HTML 结构

首先我们需要创建一个包含图片容器和按钮容器的 HTML 结构:

---- ---------------
  ---- ----------------------------
  ---- -----------------------------
------

CSS 样式

为了使轮播图居中显示并具有良好的可读性,我们需要对其进行一些样式设置:

------- -
  --------- ---------
  ------ ------
  ------- ------
  ------- - -----
-

-------------- -
  --------- ---------
  ------ -----
  ------- -----
-

------------- -
  --------- ---------
  ---- --
  ----- --
  ------ -----
  ------- -----
  -------- --
  ----------- ------- ---- ------------
-

-------------------- -
  -------- --
-

--------------- -
  --------- ---------
  ------- -----
  ----- ----
  ---------- -----------------
-

-------------- -
  -------- -------------
  ------ -----
  ------- -----
  ------- - ----
  -------------- ----
  ----------------- -----
  ------- --------
-

--------------------- -
  ----------------- -----
-

其中,.slider 是包含图片容器和按钮容器的容器元素,.slider-images 是图片容器,.slider-image 是单张图片元素,.slider-buttons 是按钮容器,.slider-button 是单个按钮元素。

JavaScript 实现

接下来我们需要使用 JavaScript 实现轮播图的功能。首先我们需要定义一些变量:

----- ------ - ----------------------------------
----- --------------- - ---------------------------------------
----- ------ - --------------------------------------------------
----- ---------------- - ----------------------------------------
----- ------- - ----------------------------------------------------
----- ---------- - --------------
--- ------------ - --
--- ------- - -----

其中,slider 是包含图片容器和按钮容器的容器元素,imagesContainer 是图片容器,images 是单张图片元素的集合,buttonsContainer 是按钮容器,buttons 是单个按钮元素的集合,imageCount 是图片数量,currentIndex 是当前显示的图片索引,timerId 是定时器 ID。

接下来我们需要实现自动播放功能:

-------- --------------- -
  ------- - -------------- -- -
    ------------ - ------------- - -- - -----------
    ------------------------
  -- ------
-

----------------

其中,setInterval 方法用于设置定时器,每隔 3 秒钟切换一次图片。currentIndex 表示当前显示的图片索引,通过取模运算实现无限循环。

接下来我们需要实现手动切换图片的功能:

-------- ---------------------------- -
  --- ---- - - -- - - --------------- ----

- ---------------------------------------------------------- --------
-------------------------------------------------------------------------------------