跨浏览器通用、可重用的选项卡tab切换js代码

下面是详细讲解“跨浏览器通用、可重用的选项卡tab切换js代码”的完整攻略:

1. 第一步:创建HTML结构

首先需要创建一个HTML结构,用于展示选项卡。通常,选项卡会有一个顶部的tab标签和多个tab内容区域。以下是一个基本的HTML结构示例:

<div class="tab-container">
  <ul class="tab-header">
    <li class="active">Tab 1</li>
    <li>Tab 2</li>
    <li>Tab 3</li>
  </ul>
  <div class="tab-content active">
    <!-- tab content for tab 1 goes here -->
  </div>
  <div class="tab-content">
    <!-- tab content for tab 2 goes here -->
  </div>
  <div class="tab-content">
    <!-- tab content for tab 3 goes here -->
  </div>
</div>

在以上示例中,tab-container 是最外层的容器,通常会用来对选项卡的样式进行整体的控制。tab-header 是包含 tab 标签(tab header)的 ul 元素,tab-content 是包含 tab 内容(tab content)的 div 元素。每个 tab-header 中需要对应一个 tab-content,并且默认第一个 tab 处于 active 状态。

2. 第二步:编写CSS样式

为了使选项卡具有更好的外观和交互体验,需要编写一些CSS样式来控制外观和行为。以下是一个基本的CSS样式示例:

.tab-container {
  border: 1px solid #ccc;
  padding: 10px;
}
.tab-header {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
}
.tab-header li {
  padding: 10px;
  margin-right: 10px;
  cursor: pointer;
  background-color: #ddd;
  border: 1px solid #ccc;
}
.tab-header li.active {
  background-color: #fff;
  border-bottom: none;
}
.tab-content {
  border: 1px solid #ccc;
  padding: 10px;
  display: none;
}
.tab-content.active {
  display: block;
}

在以上示例中,设置了 .tab-container 的边框和内边距,.tab-header 使用了 flex 布局,使其横向排列。.tab-header li 定义了 tab 标签的样式,cursor: pointer 可以使选择器变成一个指针形状,background-color 设置了背景颜色,border 设置了边框样式。.tab-content 定义了 tab 内容的样式,display: none 使其默认处于隐藏状态,.tab-content.active 使其显示。

3. 第三步:编写JavaScript代码

接下来需要编写JavaScript代码,来控制选项卡的显示和隐藏。以下是一个基本的JavaScript代码示例:

// 获取 tab 标签元素
const tabHeader = document.querySelector('.tab-header');
const tabs = tabHeader.querySelectorAll('li');

// 获取 tab 内容元素
const tabContent = document.querySelectorAll('.tab-content');

// 处理 tab 切换
function handleTabClick(event) {
  // 阻止默认事件
  event.preventDefault();

  // 获取当前点击的 tab 标签
  const currentTab = event.target;

  // 获取当前点击的 tab 标签位置
  const index = Array.prototype.indexOf.call(tabs, currentTab);

  // 隐藏所有 tab 内容
  for (let tab of tabContent) {
    tab.classList.remove('active');
  }

  // 显示当前点击的 tab 内容
  tabContent[index].classList.add('active');

  // 重置所有 tab 标签状态
  for (let tab of tabs) {
    tab.classList.remove('active');
  }

  // 激活当前点击的 tab 标签状态
  currentTab.classList.add('active');
}

// 绑定 tab 点击事件处理函数
for (let tab of tabs) {
  tab.addEventListener('click', handleTabClick);
}

在以上示例中,首先获取了 tab 标签元素和 tab 内容元素,然后绑定了 tab 点击事件处理函数 handleTabClick。在这个函数中,使用了for循环和indexof来遍历所有tab,并为当前点击的tab添加active类,以及为相应的tabcontent添加active类。

4. 示例说明

示例1:三个选项卡

在这个示例中,我们创建了一个展示三个选项卡的HTML结构,样式来自上面的CSS样式示例,JavaScript代码来自上面的JavaScript代码示例。运行一下代码,可以实现选项卡点击切换。

<html>
<head>
  <title>示例1-选项卡</title>

  <style>
    /* CSS样式 */
  </style>
</head>
<body>
  <div class="tab-container">
    <ul class="tab-header">
      <li class="active">Tab 1</li>
      <li>Tab 2</li>
      <li>Tab 3</li>
    </ul>
    <div class="tab-content active">
      <p>Tab 1 Content</p>
    </div>
    <div class="tab-content">
      <p>Tab 2 Content</p>
    </div>
    <div class="tab-content">
      <p>Tab 3 Content</p>
    </div>
  </div>

  <script>
    // JavaScript代码
  </script>
</body>
</html>

示例2:带有图片的选项卡

在这个示例中,我们扩展了选项卡的HTML结构,每个选项卡中都包含一张图片。我们可以通过给 tab 内容添加更多HTML元素来实现更丰富的选项卡内容。以下是这个示例的完整代码:

<html>
<head>
  <title>示例2-带图片的选项卡</title>

  <style>
    /* CSS样式 */
  </style>
</head>
<body>
  <div class="tab-container">
    <ul class="tab-header">
      <li class="active">Tab 1</li>
      <li>Tab 2</li>
      <li>Tab 3</li>
    </ul>
    <div class="tab-content active">
      <h2>Tab 1</h2>
      <img src="https://picsum.photos/200/300">
      <p>Tab 1 Content.</p>
    </div>
    <div class="tab-content">
      <h2>Tab 2</h2>
      <img src="https://picsum.photos/200/300">
      <p>Tab 2 Content.</p>
    </div>
    <div class="tab-content">
      <h2>Tab 3</h2>
      <img src="https://picsum.photos/200/300">
      <p>Tab 3 Content.</p>
    </div>
  </div>

  <script>
    // JavaScript代码
  </script>
</body>
</html>

以上就是“跨浏览器通用、可重用的选项卡tab切换js代码”的完整攻略,包含了HTML、CSS、JavaScript的每一个步骤说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:跨浏览器通用、可重用的选项卡tab切换js代码 - Python技术站

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

相关文章

  • 利用CSS生成精美细线Table表格无需复杂style代码

    以下是利用CSS生成精美细线Table表格无需复杂style代码的攻略,分为以下几个步骤: 1. 准备HTML代码 首先,我们需要准备HTML代码,包括表头和表格内容。例如: <table> <thead> <tr> <th>ID</th> <th>Name</th> &lt…

    css 2023年6月10日
    00
  • CKEditor4配置与开发详细中文说明文档

    下面是关于“CKEditor4配置与开发详细中文说明文档”的完整攻略。 1. CKEditor简介 CKEditor是一款优秀的开源的在线 WYSIWYG HTML 编辑器。 CKEditor提供了非常丰富的功能,可以快速开发Web应用中的富文本编辑器,比如博客、论坛、邮件编辑等应用场景。 2. 安装与配置 2.1 下载与安装 下载CKEditor的最新版本…

    css 2023年6月9日
    00
  • Vue.js做select下拉列表的实例(ul-li标签仿select标签)

    下面是详细讲解“Vue.js做select下拉列表的实例(ul-li标签仿select标签)”的完整攻略。 思路 在使用Vue.js做select下拉列表的时候,我们的思路是实现一个ul-li标签的下拉列表,通过Vue.js的指令动态地生成并管理列表,实现与原生select标签同样的效果。 实现步骤 1. 确定数据模型 在Vue.js中,我们需要为ul-li…

    css 2023年6月10日
    00
  • YUI Compressor压缩JavaScript原理及微优化

    YUI Compressor 是一个流行的 JavaScript 压缩工具,它采用了一系列的微优化来减小代码的体积和提升性能。本文将详细讲解 YUI Compressor 压缩 JavaScript 的原理及微优化,从而让你更好地理解和应用它。 YUI Compressor 压缩 JavaScript 的原理 YUI Compressor 压缩 JavaSc…

    css 2023年6月10日
    00
  • 详解Flask Session 会话的使用方法

    Flask Session 是 Flask 框架中处理会话的标准机制。它是一种服务器端状态管理机制,可用于跟踪用户的活动并在不同请求之间保留数据。 在本篇文章中,我们将介绍 Flask Session 的核心概念、使用方法和必要知识点。我们将通过一个实例程序进行演示,代码示例已经包含在下文中。 安装 Flask-Session 扩展 安装 Flask-Ses…

    Flask 2023年3月13日
    00
  • 详解css粘性定位position:sticky问题采坑

    下面我将为您详细讲解“详解CSS粘性定位position:sticky问题采坑”的完整攻略。 什么是position:sticky position:sticky是CSS3中的一种定位方式,它的特点是在元素在滚动到一定位置时会固定在指定的位置(即sticky位置),直到滚动到另一个指定位置时才会取消固定。 它与position:fixed很相似,但又有所不同…

    css 2023年6月9日
    00
  • CSS background全部汇总

    CSS background全部汇总 概述 CSS中的background属性用于设置HTML元素的背景,包括颜色、图片、位置、重复性、尺寸、是否固定等等。它是一个非常重要的属性,不仅可以设置多种效果,而且可以提高网站的美观度和用户体验。 基本语法 background属性可以写在一个指定样式表(CSS)中,也可以作为一个内联样式写在HTML标签元素中。 具…

    css 2023年6月9日
    00
  • css中style和class的加载顺序示例介绍

    让我们来详细讲解“CSS中style和class的加载顺序示例介绍”的攻略。 什么是CSS中style和class 在CSS中,我们通常使用style和class来设置元素的样式。 style用于直接在HTML标签上设置样式,比如: <div style="color: red;">Hello, world!</div&…

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