Dot dotdot dotdotdot 作为 JS 中的加载动画?

在前端开发中,我们经常需要等待某个异步操作完成后再进行下一步操作,比如数据获取、图片加载等等。为了提升用户体验,我们通常会在页面上添加一个加载动画,告诉用户程序正在努力工作中。

这篇文章将介绍一种非常流行的加载动画:Dot dotdot dotdotdot(以下简称 Dots),它是由一系列的圆点组成,依次显示、消失,产生一种“闪烁”的效果,让人联想到程序正在运行的状态。

实现

Dots 动画可以通过 CSS 实现,但是这篇文章主要介绍如何用 JavaScript 实现 Dots 加载动画。

首先,我们需要定义一个包含若干圆点的容器,比如一个 <div> 元素,并设置它的样式:

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

接着,我们在容器中添加若干个圆点,每个圆点都是一个 <span> 元素,并设置它们的样式:

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

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

这里我们使用了 CSS 的动画特性(animation),让每个圆点在 1.3 秒内完成一次显示和消失的过程。

最后,我们需要编写 JavaScript 代码来控制圆点的显示和消失。以下是一个简单的实现:

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

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

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

我们通过 setInterval 定时器不断地循环执行 showNextDot 函数,该函数会将下一个圆点设为可见,并将当前圆点索引加一。当当前圆点索引超出圆点数组的长度时,我们将其重置为 0。

指导意义

Dots 加载动画是一种简单而又实用的加载动画,可以为用户提供良好的体验。本文介绍了如何用 JavaScript 实现 Dots 动画,但是实现方式并不局限于此,可以根据需求进行适当的调整和改进。同时,我们还可以将 Dots 加载动画应用于异步操作的处理中,让用户知晓程序正在工作。

最后,完整的示例代码如下:

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

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

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

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

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