js tab效果的实现代码

让我们来详细讲解"js tab效果的实现代码"的完整攻略。

1. 理解Tab切换效果

Tab切换效果是指点击页面上的不同标签页,页面的显示内容随之改变,以达到切换页面内容的效果。我们通过JavaScript来实现这种效果,通常包含以下几个部分:

  • 标签栏:包含多个标签的容器
  • 内容栏:多个不同的内容页,与标签一一对应
  • 切换函数:用于实现标签栏的点击事件,实现标签切换以及内容页的刷新

有了Tab切换效果的理解,我们就可以开始实现代码。

2. 实现Tab切换效果的代码

2.1 HTML部分

首先,我们需要定义一个标签栏和内容栏,具体如下:

<div class="tab">
  <div class="tab-header">
    <div class="tab-item active" data-tab="tab1">Tab 1</div>
    <div class="tab-item" data-tab="tab2">Tab 2</div>
    <<div class="tab-item" data-tab="tab3">Tab 3</div>
  </div>
  <div class="tab-content">
    <div class="tab-pane active" data-tab="tab1">Tab 1 Content</div>
    <div class="tab-pane" data-tab="tab2">Tab 2 Content</div>
    <div class="tab-pane" data-tab="tab3">Tab 3 Content</div>
  </div>
</div>

其中,data-tab属性用于标记当前选中的标签页,具体实现在JavaScript部分讲解。

2.2 CSS部分

为了让Tab切换效果更美观,我们需要对标签和内容进行样式设置。具体如下:

.tab .tab-header {
  display: flex;
}
.tab .tab-item {
  margin-right: 10px;
  cursor: pointer;
}
.tab .tab-item.active {
  border-bottom: 2px solid #333;
}
.tab .tab-content .tab-pane {
  display: none;
}
.tab .tab-content .tab-pane.active {
  display: block;
}

其中,我们通过display属性来控制标签和内容的显示与隐藏,通过border属性来实现当前选中标签的下划线效果。

2.3 JavaScript部分

最后,我们来到主角JavaScript的部分。具体实现如下:

//获取标签和内容
const tabHeaders = document.querySelectorAll(".tab-item");
const tabPanes = document.querySelectorAll(".tab-pane");

//标签栏点击事件
tabHeaders.forEach((header) => {
  header.addEventListener("click", () => {
    //清除已选中样式
    document.querySelector(".tab-item.active").classList.remove("active");
    document.querySelector(".tab-pane.active").classList.remove("active");

    //选中当前标签
    const tabSelected = header.getAttribute("data-tab");
    header.classList.add("active");
    document.querySelector(`.tab-pane[data-tab=${tabSelected}]`).classList.add("active");
  });
});

首先,我们通过querySelectorAll函数来获取标签栏和内容栏中的元素。然后,我们通过forEach函数来给每个标签增加点击事件,并在事件处理函数中实现以下功能:

  1. 清除已选中标签的样式。我们通过classList属性和remove函数来实现。
  2. 选中当前标签。我们通过getAttribute函数来获取当前标签的data-tab属性值,从而确定选中的标签。然后,我们通过classList属性和add函数来改变其样式。
  3. 刷新内容页。我们先获取data-tab属性值,然后通过querySelector函数选中对应内容页,最后通过classList属性和add函数来改变其样式实现内容页的切换。

2.4 示例说明

下面,我们通过两个例子来说明如何实现Tab切换效果。

2.4.1 示例1:按索引切换Tab

有时候我们会需要按照Tab的索引来切换内容,这时候可以通过以下代码实现:

//获取标签和内容
const tabHeaders = document.querySelectorAll(".tab-item");
const tabPanes = document.querySelectorAll(".tab-pane");

//标签栏点击事件
tabHeaders.forEach((header,index) => {
  header.addEventListener("click", () => {
    //清除已选中样式
    document.querySelector(".tab-item.active").classList.remove("active");
    document.querySelector(".tab-pane.active").classList.remove("active");

    //选中当前标签
    const tabSelected = index + 1;
    header.classList.add("active");
    document.querySelector(`.tab-pane:nth-of-type(${tabSelected})`).classList.add("active");
  });
});

其中,我们利用forEach默认传入的第2个参数index来表示当前标签的索引。因为index基于0开始,所以我们需要在最后选中的索引值上加1.

2.4.2 示例2:初始选中默认Tab

有时候我们需要让某个Tab在刚加载页面时就选中,这时候可以通过以下代码实现:

//获取标签和内容
const tabHeaders = document.querySelectorAll(".tab-item");
const tabPanes = document.querySelectorAll(".tab-pane");

//标签栏点击事件
tabHeaders.forEach((header) => {
  header.addEventListener("click", () => {
    //清除已选中样式
    document.querySelector(".tab-item.active").classList.remove("active");
    document.querySelector(".tab-pane.active").classList.remove("active");

    //选中当前标签
    const tabSelected = header.getAttribute("data-tab");
    header.classList.add("active");
    document.querySelector(`.tab-pane[data-tab=${tabSelected}]`).classList.add("active");
  });
});

//默认选中第1个标签
tabHeaders[0].click();

其中,我们在标签栏点击事件的下面,新增了一个tabHeaders[0].click()语句。这条语句的作用是模拟点击第一个标签,从而实现默认选中效果。

3.总结

到此,我们已经完成了从标签HTML定义到JavaScript实现Tab切换效果的全过程,希望能够抛砖引玉,让大家进一步了解和学习JavaScript的奥妙。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js tab效果的实现代码 - Python技术站

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

相关文章

  • 详解js访问对象的属性和方法

    我很乐意为您提供关于“详解js访问对象的属性和方法”的完整攻略。 什么是对象 在JavaScript中,对象是对于某些实体的数据表示。 例如,一个人是一个对象,它可能会有一个名字,年龄和地址。 一本书也可以是一个对象,它会有一个书名,作者和 ISBN 号。 我们可以使用对象的属性和方法访问和操作这些数据。 如何访问对象的属性 如果你有一个 JavaScrip…

    JavaScript 2023年5月27日
    00
  • js 数组克隆方法 小结

    以下是关于“js 数组克隆方法 小结”的完整攻略: 标准的数组克隆方式 在JavaScript中,有两种标准的数组克隆方式: 利用ES6的扩展运算符(…) const arr1 = [1, 2, 3]; const arr2 = […arr1]; console.log(arr1); // [1, 2, 3] console.log(arr2); /…

    JavaScript 2023年5月27日
    00
  • JavaScript中函数声明与函数表达式的区别详解

    JavaScript中函数声明与函数表达式的区别详解 什么是函数声明和函数表达式? JavaScript中的函数有两种定义方式:函数声明和函数表达式。 函数声明是以function关键字开始的语句,后面跟着函数名称和一堆括号,括号内包含参数列表和函数体。例如: function sum (a, b) { return a + b; } 函数表达式是将函数定义…

    JavaScript 2023年5月27日
    00
  • JavaScript代码实现简单日历效果

    JavaScript代码实现简单日历效果 引言 日历是人们生活中必不可少的一部分,Javascript通过操作DOM元素以及CSS样式,实现了多种简单的日历效果。本文将详细介绍JavaScript如何实现一个简单的日历效果。 分析与目标 首先,我们要对一个日历的样式进行分析,发现日历主要是由星期和日期构成的,其次各个日期的显示状态需通过计算天数来完成。 所以…

    JavaScript 2023年5月27日
    00
  • JS实现倒计时(天数、时、分、秒)

    JS实现倒计时是一种常见的前端实现方式,在各类网站和应用中均有广泛应用。下面是JS实现倒计时的完整攻略: 步骤一:准备页面结构 首先需要在HTML页面中准备好倒计时所需的HTML结构,包括倒计时DOM元素的容器,每个倒计时数字占据的DOM元素等。 例如,下面是一个简单的倒计时页面结构示例: <div class="countdown-wrap…

    JavaScript 2023年5月27日
    00
  • JS加密插件CryptoJS实现的DES加密示例

    下面我将为您详细讲解使用JS加密插件CryptoJS实现的DES加密示例的攻略。 1. 安装CryptoJS 可以通过以下方式安装CryptoJS: 使用npm安装 打开终端窗口,输入以下命令: npm install crypto-js 使用CDN引入 在HTML文件头部引入CryptoJS库: <script src="https://c…

    JavaScript 2023年5月19日
    00
  • JavaScript中作用域链的概念及用途讲解

    作用域链的概念及用途讲解 在 JavaScript 中,每个函数都拥有自己的作用域(scope),也就是变量和函数的可访问范围。当函数在执行的时候,会先在自己的作用域中查找变量和函数,如果找不到,就会沿着作用域链向上逐级查找,直到找到为止。 作用域链的概念是指多个嵌套的作用域形成的查找链,它的顶端是全局作用域,底端是当前函数的作用域。 作用域链的主要作用是为…

    JavaScript 2023年6月10日
    00
  • 全面理解JavaScript中的闭包

    闭包(Closure)是JavaScript中非常重要的一个概念,由于其灵活性和特殊性,很多初学者和部分开发者难以理解。理解闭包的概念对于攻克JavaScript的高级知识和框架有很大帮助。下面是全面理解JavaScript中的闭包的完整攻略: 一、什么是闭包 闭包指的是能够访问自由变量(非全局变量,即在外层函数中定义的变量)的函数。换句话说,如果一个函数内…

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