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

yizhihongxing

下面是详细讲解“跨浏览器通用、可重用的选项卡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日

相关文章

  • vue2.0使用swiper组件实现轮播效果

    下面是关于“vue2.0使用swiper组件实现轮播效果”的完整攻略。 安装swiper 首先需要安装swiper组件。可以通过npm进行安装,命令如下: npm install swiper vue-awesome-swiper –save 其中,swiper是主要的swiper组件,vue-awesome-swiper为vue封装的轮播组件。 引入sw…

    css 2023年6月9日
    00
  • 利用python Selenium实现自动登陆京东签到领金币功能

    下面是详细的python Selenium实现自动登陆京东签到领金币功能的攻略。 准备工作 在开始操作前,需要确保电脑已经安装好了Chrome浏览器,以及ChromeDriver驱动程序。 Chrome浏览器的安装可以去官网下载:https://www.google.com/chrome/ ChromeDriver驱动程序则是需要根据自己电脑上的Chrome…

    css 2023年6月9日
    00
  • 使用CSS设置滚动条样式

    以下是“使用CSS设置滚动条样式”的完整攻略: 使用CSS设置滚动条样式 CSS可以通过伪元素和伪类来设置滚动条的样式,以下是实现滚动条样式的步骤: 使用伪元素和伪类选择器来选择滚动条。 设置滚动条的宽度、高度、颜色等样式属性。 以下是两个示例说明: 示例1:使用伪元素和伪类选择器设置滚动条样式 假设一个用户需要设置滚动条的样式,可以按照以下步骤操作: 在C…

    css 2023年5月18日
    00
  • jquery模拟实现鼠标指针停止运动事件

    实现鼠标指针停止运动事件可以通过以下步骤实现: 获取鼠标位置并设置定时器 我们可以利用mousemove事件,获取鼠标位置,并将其保存在一个变量中。然后,设置一个定时器,每隔一段时间检查鼠标位置是否发生变化。 let lastMouseX, lastMouseY; $(document).on(‘mousemove’, function(e) { lastM…

    css 2023年6月9日
    00
  • Bootstrap3.0学习笔记之CSS相关补充

    Bootstrap3.0 是一个前端开发框架,给开发者提供了一些常用的样式和组件,可以方便地快速搭建网站。在开发过程中,事实上我们还会遇到一些需要自定义或者补充的 CSS 样式,这里我们总结了 Bootstrap3.0 学习笔记之 CSS 相关补充攻略,以下是完整的攻略细节。 1. CSS 下文本自动省略 在一些场景下,文本过长的情况下可能会影响整体页面的布…

    css 2023年6月9日
    00
  • js 自制滚动条的小例子

    JS 自制滚动条的小例子 概述 在很多网页上,我们经常会看到页面某个区域内的滚动条。而这个滚动条一般是由浏览器自带的,其样式和交互方式也比较固定,不能根据我们的需求进行自定义。 本文将介绍如何使用JavaScript自制一个滚动条,并将其和页面中的内容完美结合,实现更好的用户体验。 分步实现 第一步:创建一个滚动条的框架 我们需要先创建一个滚动条的框架,并给…

    css 2023年6月10日
    00
  • HTML+CSS+JavaScript实现图片3D展览的示例代码

    HTML+CSS+JavaScript实现图片3D展览,其基本思路是通过HTML布局实现图片容器,CSS样式实现3D旋转效果,JavaScript实现交互和事件。下面我们就来一步步讲解实现的具体方法。 第一步:布局HTML 在HTML中创建一个外层容器div,设置宽高以及透视效果,然后在容器中添加一个内层容器ul,设置相应的宽高和位置。在ul中添加li标签作…

    css 2023年6月10日
    00
  • jQuery代码实现发展历程时间轴特效

    jQuery代码实现发展历程时间轴特效 简介 时间轴是一个常用的展示历史发展进程的方式,而jQuery是一个广受欢迎的JavaScript库,能够轻松实现各种页面特效。本文将详细介绍如何使用jQuery实现发展历程时间轴特效,包括主要的HTML结构、CSS样式和jQuery代码实现。 HTML结构 首先,我们需要组织出一个基本的HTML结构,用于展现时间轴的…

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