Flexbox 布局实现选项卡切换

阅读时长 6 分钟读完

在前端开发过程中,选项卡组件是比较常用的一种交互方式。而实现选项卡切换所需的布局,一般使用 Flexbox 布局。本文将介绍如何使用 Flexbox 布局实现选项卡切换,从基础快速入门到实战代码演练,帮助读者更好地掌握这一技术。

Flexbox 简介

Flexbox 是 CSS3 引入的一种新的布局模式,它的全称叫做 Flexible Box,意为“弹性盒子”。Flexbox 布局的特点是,它可以在不固定容器尺寸和不固定项尺寸的情况下,自动调整元素的位置和大小,从而实现各种复杂的布局效果。

Flexbox 布局有以下几个主要概念:

  • 容器 (Container):拥有 Flexbox 布局的元素,称为容器。容器中的每个子元素都成为该容器的“项” (Item)。
  • 主轴 (Main Axis):是容器的主要方向。在 Flexbox 布局中,水平方向 (从左到右) 为主轴,垂直方向 (从上到下) 为交叉轴 (Cross Axis)。
  • 项的排列方向 (Flex Direction):决定了项在主轴上的排列方向。默认值为 row,表示从左到右排列。还有 column (从上到下)、row-reverse (从右到左) 和 column-reverse (从下到上) 四种方向。
  • 主轴对齐方式 (Justify Content):定义了项沿主轴的排列方式。可能的取值有:flex-start (起点对齐)、flex-end (终点对齐)、center (居中对齐)、space-between (两端对齐)、space-around (均匀分配)。
  • 交叉轴对齐方式 (Align Items):定义了项沿交叉轴的对齐方式。可能的取值有:flex-start (起点对齐)、flex-end (终点对齐)、center (居中对齐)、baseline (基线对齐)、stretch (拉伸对齐)。
  • 项的排列顺序 (Order):定义了项的排列顺序。默认值为 0,数值越小,排列顺序越靠前。
  • 项的缩放比例 (Flex):定义了项在剩余空间中的缩放比例。默认值为 0,表示不占用剩余空间。
  • 项的对齐方式 (Align Self):定义了各项在交叉轴上的自身对齐方式。可能的取值有:auto (默认,继承父容器),flex-start (起点对齐)、flex-end (终点对齐)、center (居中对齐)、baseline (基线对齐)、stretch (拉伸对齐)。

选项卡切换示例

有了上面的基础知识,我们可以尝试使用 Flexbox 布局来实现选项卡切换。选项卡切换是指,用户在多个选项卡中点击某一个选项,可以切换到相应的内容。我们以 HTML、CSS、JavaScript 为基础,在实现选项卡切换时,首先构建 HTML 结构:

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

选项卡和对应的内容放在两个容器中,各自包含三个子元素。由于实现选项卡切换的过程中,需要对选项卡设置激活样式,因此我们可以使用 CSS 代码对选项卡进行样式设置:

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

在 Tab 样式中,我们使用 Flexbox 布局使 Tab 均匀分配空间,同时在选中的 Tab 上添加 active 样式,以突出其激活状态。在 Panel 样式中,我们使用 display 属性将其隐藏,然后再通过 JS 代码在需要时动态显示。下面是 JavaScript 代码的实现:

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

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

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

JavaScript 代码中,我们使用 forEach 方法循环绑定所有 Tab 的 click 事件,然后利用该 Tab 的 getIndex 函数,通过点击时的 target 获取当前 Tab,使用 active 样式切换到选中状态。同时,找到其对应的 Panel,也添加 active 样式,其他 Panel 则移除 active 样式。

总结

本文利用 Flexbox 布局实现了选项卡切换功能,同时介绍了其主要的概念和使用方法。Flexbox 布局在实现各种复杂布局时非常强大,熟练掌握它的大致功能和操作方法对装修网站非常有用。同时,在选择工具时,也可考虑采用 Flexbox 工具,以便更加高效、灵活地实现网页布局。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645cc781968c7c53b0f40c65

纠错
反馈