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

yizhihongxing

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日

相关文章

  • stringbuffer清空

    当然,我很乐意为您提供有关“StringBuffer清空”的完整攻略。以下是详细的步骤和两个示例: 1. StringBuffer清空 在Java中,StringBuffer是一个可变的字符串,可以用于动态构建字符串。有时,我们需要清空StringBuffer中的内容,以便重新使用它。以下是如何清空StringBuffer的方法。 2. StringBuff…

    other 2023年5月6日
    00
  • Win10共享登录帐户名怎么设置显示或隐藏?

    Win10共享登录帐户名是指多个用户可以共享同一个帐户登录电脑,此时,登录界面将显示该共享帐户的用户名,但是,有些用户由于安全等方面的考虑,希望隐藏该共享帐户的用户名。那么,如何在Win10中设置共享帐户的用户名的显示或隐藏呢?下面是详细攻略: 第一步:进入注册表编辑器 Win10共享登录帐户名的设置需要通过注册表编辑器实现,按下 Win+R 快捷键,同时在…

    other 2023年6月27日
    00
  • Win11新工具:轻轻松松帮你安装任何安卓 APK 应用

    来详细讲解一下“Win11新工具:轻轻松松帮你安装任何安卓 APK 应用”的完整攻略。 什么是“Win11新工具:轻轻松松帮你安装任何安卓 APK 应用”? 在Win11系统中,微软推出了一款名为 “安卓应用” 的新应用,可以帮助用户轻松地在Win11系统中安装并运行安卓 APK 应用程序。 如何使用“安卓应用”安装安卓 APK 应用? 接下来,我将提供“安…

    other 2023年6月25日
    00
  • 让ThinkPHP支持大小写url地址访问的方法

    让ThinkPHP支持大小写URL地址访问的方法攻略 ThinkPHP是一个流行的PHP开发框架,它默认情况下对URL地址的大小写不敏感。如果你需要让ThinkPHP支持大小写URL地址访问,可以按照以下步骤进行设置。 步骤一:修改配置文件 打开ThinkPHP的配置文件config.php,一般位于项目根目录下的application文件夹中。 找到URL…

    other 2023年8月16日
    00
  • 基于HTTP协议实现的小型web服务器的方法

    实现一个基于HTTP协议的小型web服务器,需要考虑以下步骤: 了解HTTP协议 HTTP是一种应用层协议,用于传输Web页面、图片等数据。HTTP协议有请求和响应两部分,客户端首先向服务器发送请求,服务器接收请求后发送响应。具体的HTTP协议内容可以参考RFC2616。 选择编程语言和框架 实现一个小型web服务器,可以使用诸如Python、Node.js…

    other 2023年6月27日
    00
  • iOS13.2正式版固件下载地址 iOS13.2正式版下载

    iOS13.2正式版固件下载地址 iOS13.2正式版固件是苹果公司最新发布的操作系统版本,提供了许多新功能和改进。以下是获取iOS13.2正式版固件的完整攻略。 步骤一:检查设备兼容性 首先,确保你的设备兼容iOS13.2正式版。以下是支持iOS13.2的设备列表: iPhone:iPhone 6s及以上型号 iPad:iPad Air 2及以上型号、iP…

    other 2023年8月4日
    00
  • JavaScript模拟实现封装的三种方式及写法区别

    下面是JavaScript模拟实现封装的三种方式及写法区别的完整攻略。 什么是封装 封装是面向对象编程中的一种重要概念,它可以将类的实现细节隐藏起来,只暴露必要的接口给使用者,从而提高了代码的可维护性和安全性。 在JavaScript中,我们可以使用闭包和构造函数的方式来实现封装。 方式一:使用闭包封装 闭包是指有权访问另一个函数作用域中变量的函数。我们可以…

    other 2023年6月25日
    00
  • Javascript中从学习bind到实现bind的过程

    学习 JavaScript 中的函数绑定(bind)需要了解以下几个方面: 理解 this 到底是哪个对象; 理解函数调用的几种方式(隐式绑定、显式绑定、new 绑定等); 学习实现 bind 函数。 step1:理解 this 到底是哪个对象 this 的指向问题一直都是 JavaScript 中比较容易让人困惑的问题,因为它的指向是非常灵活的。在函数执行…

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