简单实现JavaScript选项卡切换效果

简单实现 JavaScript 选项卡切换效果

在前端开发中,选项卡切换是常用的交互方式之一。本文将介绍如何使用纯 JavaScript 实现一个简单的选项卡切换效果。

HTML 结构

选项卡通常由一个导航条和多个内容面板组成。HTML 结构如下:

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

其中,.tab 是选项卡容器,.nav 是导航条,.panels 是内容面板,#panel1#panel2#panel3 是对应的面板 ID。

CSS 样式

为了让选项卡更加美观,我们需要添加一些样式。这里只提供一个简单的样式示例:

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

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

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

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

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

JavaScript 实现

使用纯 JavaScript 实现选项卡切换的关键在于事件监听和样式控制。

首先,选项卡默认显示第一个面板。我们需要给第一个面板添加 .active 类:

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

然后,我们需要监听导航条中的链接点击事件,在点击时切换对应面板的可见性,并修改链接的样式:

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

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

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

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

最后,我们需要实现选项卡容器的基本功能,比如自动调整面板高度等:

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

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

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

完整示例代码

HTML:

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

CSS:

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

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