js tab效果的实现代码

yizhihongxing

让我们来详细讲解"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日

相关文章

  • 使用canvas生成含有微信头像的邀请海报没有微信头像问题

    使用Canvas生成含有微信头像的邀请海报是一项常见的需求,当中有时会遇到生成海报时,无法正确显示微信头像的问题。基于此,我编写了以下攻略来帮助您解决该问题。 常见问题分析 微信头像无法正确显示原因 微信头像无法正确显示,通常情况下是由于CORS的限制所导致的。在浏览器中,脚本的跨源HTTP请求通常会受到同源策略的限制,因此无法获取其他网站的数据。而我们在使…

    JavaScript 2023年6月11日
    00
  • 深入剖析JavaScript中的函数currying柯里化

    深入剖析JavaScript中的函数currying柯里化 什么是柯里化? 柯里化 (Currying),又称部分求值 (Partial Evaluation),是一种把接收多个参数的函数变换成接收一个单一参数 (最初函数的第一个参数) 的函数,并返回一个新函数的过程。新函数接收余下的参数,并返回原函数需要返回的结果。 举个例子,下面这个简单的函数: fun…

    JavaScript 2023年5月27日
    00
  • 基于js中this和event 的区别(详解)

    当我们在JavaScript中使用this和event时,可能会产生混淆。在JavaScript中,this指的是函数的上下文,而event指的是触发事件的对象。在本文中,将详细讲解在JavaScript中使用this和event的区别。 1. this 在JavaScript中,this指的是当前函数的上下文。在函数中使用this时,它将指向调用函数的对象…

    JavaScript 2023年6月10日
    00
  • js实现ajax的用户简单登入功能

    下面就是实现“js实现ajax的用户简单登入功能”的完整攻略: 概述 Ajax是异步JavaScript和XML的缩写,是一组Web开发技术,可在不重新加载整个页面的情况下向Web服务器发送和接收数据。此外,Ajax在网络上被大量使用,一些开发人员发现这种方法比传统的提交表单方式更灵活。 相应地,我们可以通过ajax实现用户的简单登入功能。 实现步骤 1. …

    JavaScript 2023年6月11日
    00
  • JavaScript常用工具函数库汇总

    JavaScript常用工具函数库汇总 什么是JavaScript常用工具函数库? JavaScript常用工具函数库指的是一组JavaScript函数集合,旨在提供在日常工作中最常用和最基础的工具函数,以便在开发过程中更便捷地进行常见操作,以提高工作效率。 常用工具函数库有哪些? 常用工具函数库有很多,这里推荐以下几个: 1. Lodash Lodash是…

    JavaScript 2023年5月18日
    00
  • 详解cesium实现大批量POI点位聚合渲染优化方案

    详解cesium实现大批量POI点位聚合渲染优化方案 概述 随着互联网和移动设备的普及,地理信息系统(GIS)以及地理数据的使用越来越广泛。在GIS应用开发中,矢量数据展示常常使用散点图,而在数据量较大的情况下,需要对散点进行聚合来达到优化效果。在本文中,我们将详细介绍如何使用cesium实现大批量POI点位聚合渲染优化方案。 cesium点位聚合原理 常见…

    JavaScript 2023年6月11日
    00
  • 移动端(微信等使用vConsole调试console的方法

    移动端开发中,使用vConsole调试console是非常常用的一种调试手段。下面我将详细讲解如何在微信等移动端应用中使用vConsole跟踪和调试console。 准备工作 首先,我们需要在移动端应用中引入vConsole。可以通过引入vConsole的CDN,或者将vConsole下载到项目中并引入文件的方式来实现。 使用示例1:在微信中调试consol…

    JavaScript 2023年6月10日
    00
  • javascript 定时器工作原理分析

    JavaScript 定时器工作原理分析 一、概述 JavaScript 定时器是指可以在代码执行期间设定一个定时任务,在经过一段时间后执行任务的功能。常见的定时器包括 setTimeout 和 setInterval。通过定时器,我们可以实现一些周期性的或者延迟执行的逻辑。 二、setTimeout setTimeout 是 JavaScript 中最常用…

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