选项卡是网页中常用的交互式组件,用于在一组内容之间进行切换。本文将介绍如何使用 JavaScript 实现一个完美的选项卡切换效果。
HTML 结构
我们首先需要准备一个基础的 HTML 结构,其中包含多个选项卡,每个选项卡都对应着一块内容。
-- -------------------- ---- ------- ---- ------------ --- ---------------- --- ------------------ ------ ------- ------ ------- ------ ----- ---- -------------------- ---- --------------- --------------- ------- ---- ------------------------ ------- ---- ------------------------ ------- ------ ------
其中,.tab-nav
是选项卡导航栏,.tab-content
是选项卡内容容器,.tab-pane
是单个选项卡内容。
CSS 样式
为了让选项卡看起来更加美观,我们可以添加一些 CSS 样式。
-- -------------------- ---- ------- -------- - -------- ----- ----------- ----- ------- -- -------- -- - -------- -- - ------- -------- ------------- ----- -------- ---- - -------- --------- - ----------------- ----- - --------- - -------- ----- -------- ----- - ---------------- - -------- ------ -
其中,.tab-nav
和 .tab-nav li
控制选项卡导航的样式,.tab-pane
和 .tab-pane.active
控制选项卡内容的样式。
JavaScript 实现
接下来,我们使用 JavaScript 实现选项卡的切换效果。首先,我们需要获取到选项卡导航和选项卡内容容器。
const tabNav = document.querySelector('.tab-nav'); const tabContent = document.querySelector('.tab-content');
然后,我们可以通过给选项卡导航绑定事件来实现选项卡的切换。这里我们使用事件委托的方式来处理事件。
-- -------------------- ---- ------- -------------------------------- ------- -- - -- --------------------- --- ----- - -- ---------- ----- ----- - --------------------------------------------- -------------- -- ------------ ----------------------------------- -- --------------------------------- ------------------------------------- -- ------------ --------------------------------------- -- --------------------------------- --------------------------------------------------- - ---
在上面的代码中,我们首先判断事件触发的元素是否为选项卡导航中的 li
元素。如果是,则获取当前选项卡的索引,并将选项卡导航中的激活状态和选项卡内容中的显示状态进行切换。
示例代码
完整的示例代码如下:
-- -------------------- ---- ------- ---- ------------ --- ---------------- --- ------------------ ------ ------- ------ ------- ------ ----- ---- -------------------- ---- --------------- --------------- ------- ---- ------------------------ ------- ---- ------------------------ ------- ------ ------ ------- -------- - -------- ----- ----------- ----- ------- -- -------- -- - -------- -- - ------- -------- ------------- ----- -------- ---- - -------- --------- - ----------------- ----- - --------- - -------- ----- -------- -- - ---------------------------------------------------------- -------- --------------------------------------------------------------------------------