JS面向对象编程实现的Tab选项卡案例详解

JS面向对象编程实现的Tab选项卡案例详解

介绍

Tab选项卡是网页中常见的一种交互方式,通过点击不同的选项卡,切换展示不同的内容。本文将介绍如何使用JavaScript面向对象编程实现一个Tab选项卡的效果。

准备工作

HTML结构

首先,需要在HTML中创建Tab选项卡的结构。以下是一个简单的示例:

<div class="tab">
  <ul class="tab-nav">
    <li class="active">选项卡1</li>
    <li>选项卡2</li>
    <li>选项卡3</li>
  </ul>
  <div class="tab-content">
    <div class="tab-pane active">
      第一个选项卡的内容
    </div>
    <div class="tab-pane">
      第二个选项卡的内容
    </div>
    <div class="tab-pane">
      第三个选项卡的内容
    </div>
  </div>
</div>

其中,.tab-nav是选项卡的导航栏,.active表示当前激活的选项卡,.tab-content是选项卡的内容区域,.tab-pane是每个选项卡对应的内容。

CSS样式

接下来,需要添加一些CSS样式来美化选项卡。以下是一个简单的示例:

.tab-nav {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: space-between;
  border-bottom: 1px solid #ccc;
}

.tab-nav li {
  flex: 1;
  text-align: center;
  padding: 10px;
  background-color: #f5f5f5;
  cursor: pointer;
}

.tab-nav li.active {
  background-color: #fff;
  border-bottom: none;
}

.tab-content .tab-pane {
  display: none;
  padding: 20px;
}

.tab-content .tab-pane.active {
  display: block;
}

以上样式为Tab选项卡提供了基本的样式,可以根据需求进行修改。

JavaScript文件

最后,需要创建一个JavaScript文件,用于实现Tab选项卡的功能。以下是一个简单的示例:

class Tab {
  constructor(tab) {
    this.tab = tab;
    this.nav = tab.querySelector('.tab-nav');
    this.panels = tab.querySelectorAll('.tab-pane');
    this.activeIndex = 0;
    this.init();
  }

  init() {
    this.bindEvents();
    this.panels[this.activeIndex].classList.add('active');
  }

  bindEvents() {
    this.nav.addEventListener('click', (e) => {
      if (e.target.tagName === 'LI') {
        const index = Array.from(this.nav.children).indexOf(e.target);
        this.switchTab(index);
      }
    });
  }

  switchTab(index) {
    if (index === this.activeIndex) return;
    this.panels[this.activeIndex].classList.remove('active');
    this.panels[index].classList.add('active');
    this.nav.children[this.activeIndex].classList.remove('active');
    this.nav.children[index].classList.add('active');
    this.activeIndex = index;
  }
}

const tab = new Tab(document.querySelector('.tab'));

实现过程

在上面的代码中,我们定义了一个 Tab 类,该类接受一个包含选项卡结构的 DOM 元素作为构造函数的参数。在构造函数中,我们获取了选项卡导航栏、选项卡内容区域和当前激活的选项卡索引(默认为0),并调用了 init 方法。

init 方法中,我们通过调用 bindEvents 方法绑定了选项卡导航栏的点击事件,并调用了 switchTab 方法切换到当前激活的选项卡。

bindEvents 方法中,我们使用了事件委托的方式,监听了选项卡导航栏的点击事件,并根据点击的元素计算出对应的选项卡索引,然后调用了 switchTab 方法进行切换。

switchTab 方法中,我们首先判断如果点击的选项卡和当前激活的选项卡相同,则不做任何处理。然后,我们将当前激活的选项卡的 active 类名移除,将点击的选项卡的 active 类名添加,同时也对应地切换了它们对应的内容区域,最后将当前激活的选项卡索引设置为点击的选项卡的索引。

示例说明

示例一

<div class="tab">
  <ul class="tab-nav">
    <li class="active">选项卡1</li>
    <li>选项卡2</li>
  </ul>
  <div class="tab-content">
    <div class="tab-pane active">
      第一个选项卡的内容
    </div>
    <div class="tab-pane">
      第二个选项卡的内容
    </div>
  </div>
</div>

在这个示例中,我们创建了一个包含两个选项卡的Tab,第一个选项卡为当前激活状态。我们使用上面提到的JavaScript文件对这个Tab进行了初始化,这样点击不同的选项卡时,对应的内容区域就会展示出来。

示例二

<div class="tab">
  <ul class="tab-nav">
    <li class="active">选项卡1</li>
    <li>选项卡2</li>
    <li>选项卡3</li>
    <li>选项卡4</li>
  </ul>
  <div class="tab-content">
    <div class="tab-pane active">
      第一个选项卡的内容
    </div>
    <div class="tab-pane">
      第二个选项卡的内容
    </div>
    <div class="tab-pane">
      第三个选项卡的内容
    </div>
    <div class="tab-pane">
      第四个选项卡的内容
    </div>
  </div>
</div>

在这个示例中,我们创建了一个包含四个选项卡的Tab,第一个选项卡为当前激活状态。同样地,我们使用上面提到的JavaScript文件对这个Tab进行了初始化,这样点击不同的选项卡时,对应的内容区域就会展示出来。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS面向对象编程实现的Tab选项卡案例详解 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue实现时间轴效果

    下面是“Vue实现时间轴效果”的完整攻略。 简介 时间轴是一种用于展示时间进程的方式,通常由一条水平线和上面分布的时间事件点组成。在网站设计中,时间轴常用于展示历史时间线、流程进程等内容。本次攻略将介绍如何使用Vue来实现基础的时间轴效果。 示例代码 首先我们来看一个简单的示例代码,它展示了一个简单的时间轴效果。 <template> <d…

    Vue 2023年5月28日
    00
  • vue实现时间倒计时功能

    以下是“vue实现时间倒计时功能”的完整攻略,希望能对您有所帮助。 基本思路 Vue 实现时间倒计时功能的基本思路是:获取倒计时的起始时间和结束时间,然后通过 setInterval 函数计算时间差并更新视图上的倒计时剩余时间。 具体步骤 1.在Vue组件中定义起始时间和结束时间。 data() { return { startTime: new Date(…

    Vue 2023年5月28日
    00
  • Vue Element前端应用开发之常规Element界面组件

    下面我将为你详细讲解Vue Element前端应用开发之常规Element界面组件的完整攻略。 什么是Element UI组件库? Element UI是一个基于Vue.js开发的组件库,具有丰富的UI组件和交互行为,适用于快速开发,提供了一组优雅、高效的基础组件,极大地减轻了开发人员的工作量。 安装Element UI 安装Element UI的方式有以下…

    Vue 2023年5月28日
    00
  • 使用vue编写一个点击数字计时小游戏

    让我详细讲解如何使用Vue来编写一个点击数字计时小游戏。 1. 创建项目并安装依赖 首先,需要在本地电脑上安装Node.js和npm。然后,在命令行中输入以下命令,创建Vue项目: vue create click-number-game 这个命令会创建一个名为“click-number-game”的Vue项目。等待命令行安装完依赖后,进入项目目录: cd …

    Vue 2023年5月29日
    00
  • Vue之文件加载执行全流程

    当浏览器加载Vue文件时,需要经过文件加载、解释和执行的过程,以下是Vue之文件加载执行全流程的攻略: 文件加载 首先,浏览器会从服务器端请求Vue文件。如果该Vue文件在浏览器缓存中已经存在,则浏览器直接从缓存中读取该文件,否则,浏览器会向服务器端请求该文件。 当Web服务器收到浏览器的Vue文件请求后,会将该文件返回给浏览器。浏览器接收到Vue文件后,会…

    Vue 2023年5月27日
    00
  • 关于Vue Router的10条高级技巧总结

    下面我将详细讲解”关于Vue Router的10条高级技巧总结”这篇文章的完整攻略。 1. 理解vue-router的基本概念 在使用vue-router前,我们需要先了解基本概念,包括路由、路由参数、路由钩子函数等内容。对这些基本概念进行了解后,我们才能更好地理解vue-router的高级用法、优化和技巧。 2. 利用路由钩子函数优化路由过渡效果 路由钩子…

    Vue 2023年5月27日
    00
  • vue弹窗消息组件的使用方法

    下面我将详细讲解“vue弹窗消息组件的使用方法”的完整攻略。 1. 什么是vue弹窗消息组件? vue弹窗消息组件是一个用于在vue项目中实现消息提示的插件,可以快速便捷的在页面中弹出消息提示框,用户可以在弹出框中查看系统消息等重要信息。 2. 安装vue弹窗消息组件 安装该组件需要通过npm下载,使用npm命令行进行安装: npm i vue-messag…

    Vue 2023年5月27日
    00
  • vue实现右上角时间显示实时刷新

    下面我将详细讲解在Vue项目中如何实现右上角时间显示的实时刷新。 一、示例一——使用setInterval 首先,在Vue组件中,我们需要定义两个数据:一个用来保存当前时间的变量和一个用来保存计时器的变量。可以在data中定义这两个变量: data() { return { currentTime: ”, timer: null } } 接着,在mount…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部