跨浏览器通用、可重用的选项卡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背景background、background-position使用详解

    CSS背景background、background-position使用详解 背景概述 在 CSS 中,每个元素都可以有一个背景。背景是一个用来设置元素背景表现的 CSS 属性合集,包括颜色、图片、位置、大小等。 CSS背景属性 background-color 用于设置元素背景的颜色。 div { background-color: #ffffff; }…

    css 2023年6月9日
    00
  • CSS中的四种定位区别详解

    CSS中的四种定位区别详解 在CSS中,常见的定位方式有四种:静态定位、相对定位、绝对定位和固定定位。这些定位方式的选择取决于布局的需要和效果的要求。 静态定位 静态定位是默认的定位方式,元素总是处于文档流中的正常位置。使用静态定位时,top、right、bottom、left属性将不会起作用,也不支持z-index属性。静态定位可以使用以下方式来设置: p…

    css 2023年6月9日
    00
  • li样式不显示使用overflow:hidden导致Li前面点、圈等样式不见

    这个问题通常出现在给<ul>或者<ol>元素设置了一个宽度,然后想在其中的<li>元素中显示特定的样式,但是发现点、圈等样式不显示出来,只显示了一个空白。 其中原因是,当<li>元素的宽度超出了<ul>或<ol>元素的宽度时,<li>元素会溢出,而溢出的部分不会显示任何样式,…

    css 2023年6月10日
    00
  • 美化下拉列表

    当我们在网页中需要一个下拉列表的时候,除了基础的样式无法满足需求外,我们可能还需要对下拉列表进行美化,以便更好的融入到页面的风格中。下面是实现美化下拉列表的完整攻略。 1. 利用CSS样式来美化下拉列表 使用CSS样式对下拉列表样式进行美化是最简单的方式之一。以下是实现方式: (1)修改背景颜色、字体大小和颜色 通过修改background-color、co…

    css 2023年6月10日
    00
  • CSS预处理器Sass详解

    CSS预处理器Sass详解 简介 CSS预处理器Sass是一种基于CSS的领先的编程式样式表语言,是由Ruby语言编写而成,旨在简化CSS的编写和维护。Sass具有许多高级功能,如变量、嵌套规则、Mixin、模块化、函数等。Sass为Web开发者提供了更加灵活且易于维护的样式表编写方式,并且它可以被用于任何的Web开发项目中。 安装 安装Sass需要先安装R…

    css 2023年6月10日
    00
  • CSS学习之五 定位布局

    我来详细讲解一下“CSS学习之五 定位布局”的完整攻略。 一、什么是定位布局 在CSS中,定位布局是通过设置元素的定位属性,来改变元素在文档中的位置和大小。常用的定位属性有:position,top,right,bottom和left。 二、定位属性的介绍 1. position属性 该属性被用来指定一个元素在文档中的定位方式,其取值可以是absolute、…

    css 2023年6月9日
    00
  • Vue多布局模式实现方法详细讲解

    Vue多布局模式实现方法详细讲解 概述 Vue是一款流行的前端框架,它支持多种布局模式。本文将介绍如何使用Vue实现多种布局模式。 布局模式 在前端开发中,布局是非常重要的一部分。Vue支持多种布局模式,包括但不限于以下几种: 单一布局:所有组件都使用相同的布局。 多重布局:根据不同的路由或条件,使用不同的布局。 响应式布局:根据不同的屏幕尺寸,使用不同的布…

    css 2023年6月11日
    00
  • 关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦

    关于IE、Firefox、Opera页面呈现异同写脚本很痛苦,主要原因是不同浏览器的页面呈现方式存在差异,导致相同的HTML、CSS代码在不同浏览器下呈现效果不同,导致需要编写兼容性代码。以下是详细攻略: 1. 熟悉各浏览器的特点 了解每个浏览器的特性,可以使我们更好地编写兼容性代码。 Internet Explorer Internet Explorer(…

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