JavaScript实现的圆形浮动标签云效果实例

阅读时长 4 分钟读完

标签云是一种经典的Web交互展示方式,通常用于呈现文章、商品或者其他信息的关键词汇。本文将介绍如何使用JavaScript实现一个圆形浮动标签云效果,并附带示例代码。

效果预览

在开始之前,先来看一下我们最终要实现的效果:

实现思路

要实现这样的效果,我们需要掌握以下几个知识点:

  • HTML和CSS基础知识
  • JavaScript DOM操作
  • 数学计算

具体的实现思路如下:

  1. 在HTML中创建一个包含标签的容器元素。
  2. 使用JavaScript获取所有标签元素,并随机生成它们的位置和大小。
  3. 根据标签的位置计算出标签之间的距离,并判断是否有重叠。
  4. 如果有重叠,则重新生成位置,直到没有重叠。
  5. 监听鼠标滚轮事件,根据滚轮方向调整标签云的大小。
  6. 监听窗口大小变化事件,重新计算标签的位置和大小。

代码实现

首先,在HTML中创建一个包含标签的容器元素,并引入必要的CSS样式:

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

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

接下来,使用JavaScript获取所有标签元素,并随机生成它们的位置和大小:

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

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

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

然后,根据标签的位置计算出标签之间的距离,并判断是否有重叠。如果有重叠,则重新生成位置,直到没有重叠:

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

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

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

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

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

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

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

- ---------------------------------------------------------- --------
--------------------------------------------------------------------------------
纠错
反馈