JS自定义选项卡函数及用法实例分析

JS自定义选项卡函数及用法实例分析

选项卡是网页中常用的一种导航方式,通过切换不同的选项卡来展示不同的内容。使用JS可以轻松实现自定义的选项卡,并添加各种效果。

函数实现

以下是一个自定义选项卡的JS函数实现:

function tabSwitch(tabNav, tabContent, activeClass, index) {
  // 获取选项卡菜单和内容的元素
  var nav = document.querySelectorAll(tabNav);
  var content = document.querySelectorAll(tabContent);

  // 隐藏所有的选项卡
  content.forEach(function(item) {
    item.style.display = 'none';
  });

  // 移除所有菜单项的激活状态
  nav.forEach(function(item) {
    item.classList.remove(activeClass);
  });

  // 显示指定位置的选项卡
  content[index].style.display = 'block';

  // 给指定的菜单项添加激活状态
  nav[index].classList.add(activeClass);

  // 点击菜单切换选项卡
  nav.forEach(function(item, idx) {
    item.addEventListener('click', function(evt) {
      evt.preventDefault();
      content.forEach(function(tab) {
        tab.style.display = 'none';
      });
      nav.forEach(function(nav) {
        nav.classList.remove(activeClass);
      });
      evt.target.classList.add(activeClass);
      content[idx].style.display = 'block';
    });
  });
}

该函数接受四个参数:

  • tabNav:选项卡菜单的选择器
  • tabContent:选项卡内容的选择器
  • activeClass:激活状态的类名
  • index:默认展示的选项卡位置

用法示例

以下是两个用法示例:

示例1:默认选中第一个选项卡

HTML结构:

<div class="tab-wrap">
  <ul class="tab-nav">
    <li class="active"><a href="#">选项卡1</a></li>
    <li><a href="#">选项卡2</a></li>
    <li><a href="#">选项卡3</a></li>
  </ul>
  <div class="tab-content">
    <div class="tab-panel active">选项卡1的内容</div>
    <div class="tab-panel">选项卡2的内容</div>
    <div class="tab-panel">选项卡3的内容</div>
  </div>
</div>

使用方法:

tabSwitch('.tab-nav li', '.tab-content .tab-panel', 'active', 0);

其中,.tab-nav li选择器对应选项卡菜单的元素,.tab-content .tab-panel选择器对应选项卡内容的元素,active是激活状态的类名,0表示默认选中第一个选项卡。

示例2:自定义样式和效果

HTML结构:

<div class="tab-wrap2">
  <div class="tab-nav">
    <a href="#" data-index="0" class="active">选项卡1</a>
    <a href="#" data-index="1">选项卡2</a>
    <a href="#" data-index="2">选项卡3</a>
  </div>
  <div class="tab-content">
    <div class="tab-panel active">选项卡1的内容</div>
    <div class="tab-panel">选项卡2的内容</div>
    <div class="tab-panel">选项卡3的内容</div>
  </div>
</div>

使用方法:

tabSwitch('.tab-nav a', '.tab-content .tab-panel', 'active', 0);

// 自定义样式和效果
var tabNav = document.querySelector('.tab-nav');
tabNav.addEventListener('click', function(evt) {
  if (evt.target.tagName.toLowerCase() === 'a') {
    evt.preventDefault();

    // 移除所有菜单项的激活状态
    tabNav.querySelectorAll('a').forEach(function(a) {
      a.classList.remove('active');
    });

    // 添加当前菜单项的激活状态
    evt.target.classList.add('active');
  }
});

其中,.tab-nav a选择器对应选项卡菜单的元素,.tab-content .tab-panel选择器对应选项卡内容的元素,active是激活状态的类名,0表示默认选中第一个选项卡。在之后的代码中,我们添加了一个事件监听器,实现了自定义的菜单项样式和效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS自定义选项卡函数及用法实例分析 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • iPhone7如何删除软件 苹果iPhone7手机删除软件图文教程

    iPhone7如何删除软件 – 苹果iPhone7手机删除软件图文教程 1. 通过主屏幕删除应用 在主屏幕上找到您想要删除的应用程序图标,轻轻按住它(不要松开手),直到图标开始摇晃或震动 点击应用程序图标上出现的”X”符号,确认是否要删除该应用程序 点击“删除”以删除应用,或者点击“取消”放弃删除 示例说明: 假设你要删除手机上的“Instagram”,首先…

    other 2023年6月25日
    00
  • JavaScript判断浏览器版本的方法

    JavaScript判断浏览器版本的方法 在JavaScript中,我们可以使用不同的方法来判断用户所使用的浏览器版本。下面是一些常用的方法: 1. 使用navigator.userAgent属性 navigator.userAgent属性返回浏览器的用户代理字符串,其中包含了浏览器的相关信息,包括版本号。我们可以通过解析这个字符串来获取浏览器的版本信息。 …

    other 2023年8月3日
    00
  • JVM内存区域划分相关原理详解

    JVM内存区域划分相关原理详解 Java虚拟机(JVM)是Java程序的运行环境,它将程序的执行过程抽象为一组内存区域。这些内存区域的划分对于Java程序的性能和内存管理至关重要。本攻略将详细讲解JVM内存区域划分的相关原理。 JVM内存区域划分 JVM内存区域划分主要包括以下几个部分: 程序计数器(Program Counter):程序计数器是一块较小的内…

    other 2023年8月2日
    00
  • php使用cookie保存登录用户名的方法

    下面就为大家详细讲解一下“PHP使用cookie保存登录用户名的方法”的完整攻略。 什么是cookie? 在开始讲解之前,我们需要先了解一下cookie。cookie,即“小甜饼”,是指服务器发送到用户浏览器,记录用户访问网站的一些信息的文本文件。它可以在浏览器端存储用户信息,如登录状态、用户偏好、购物车信息等等,以便于下一次用户访问网站时可以直接使用这些信…

    other 2023年6月27日
    00
  • “/”应用程序中的服务器错误和Server Error in ”/” Application.的终极解决方法

    问题描述: 当我们访问某个网站时,有时会出现“/”应用程序中的服务器错误或Server Error in ”/” Application.这样的提示,这时候我们就需要解决这个问题。 解决方法: 检查Web.config文件 打开网站的根目录,找到Web.config文件,检查它是否存在。如果不存在,复制一份Web.config.default文件并将其重…

    other 2023年6月25日
    00
  • Java数据结构与算法学习之双向链表

    Java数据结构与算法学习之双向链表 什么是双向链表? 双向链表是链表的一种,与单向链表不同的是,双向链表的每个节点都有两个指针,一个指向前一个节点,一个指向后一个节点,因此双向链表可以双向遍历。 双向链表的Java实现 Java中可以使用节点类来实现双向链表,节点类代码如下: public class Node<T> { private T d…

    other 2023年6月27日
    00
  • C++11中列表初始化机制的概念与实例详解

    C++11中列表初始化机制的概念与实例详解 在C++11中,引入了列表初始化(也称为统一初始化)的机制,可以使用初始化列表作为一种初始化数据的方法。列表初始化机制被广泛应用于C++的标准库中,并且可以在用户自定义类型中使用,提供了一种简洁、安全、可读性强的方式来初始化各种类型的对象。 概念 在C++11中,可以使用初始化列表对各种类型的对象进行初始化。初始化…

    other 2023年6月20日
    00
  • Wind10如何开启纯命令行模式?

    开启Wind10纯命令行模式的步骤如下: 步骤一:打开“运行”窗口 按下Win + R键组合,打开“运行”窗口。 步骤二:输入命令 在“运行”窗口中输入“cmd”命令,然后按下回车键即可。此时,Wind10将会在命令行模式下启动。 示例一 在命令行模式下,可以使用ping命令测试互联网连接。例如,输入以下命令: ping www.baidu.com 其中,w…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部