原生js与jQuery实现简单的tab切换特效对比

yizhihongxing

实现简单的tab切换特效是前端开发中比较基础和常见的功能之一。使用原生JS和jQuery都可以实现该功能,下面详细讲解原生JS和jQuery分别实现该功能的过程:

原生JS实现tab切换

HTML代码

先给出HTML代码,我们的tab切换控制对象为按钮(btn类名),tab内容为tc内容的div元素:

<div class="tabs">
  <button class="btn active" data-tab="tab1">Tab1</button>
  <button class="btn" data-tab="tab2">Tab2</button>
  <button class="btn" data-tab="tab3">Tab3</button>
  <div id="tab1" class="tc active">Tab1 Content</div>
  <div id="tab2" class="tc">Tab2 Content</div>
  <div id="tab3" class="tc">Tab3 Content</div>
</div>

CSS样式

为以上HTML元素添加CSS样式,实现 active 类型的颜色区分效果

.tabs{
  display: flex;
  flex-direction: column;
  align-items: center;
}
.btn{
  padding: 8px 16px;
  background-color: #ddd;
  margin: 8px;
  border-radius: 4px;
  cursor: pointer;
}
.active{
  background-color: #4CAF50;
  color: white;
}
.tc{
  display: none;
  width: 100%;
  padding: 16px;
  text-align: center;
}
.tc.active{
  display: block;
}

JS代码

最后给出JS代码,实现点击切换功能

//获取btn按钮元素列表,并添加点击事件回调函数
const btns = document.querySelectorAll('.btn')
btns.forEach(function(btn){
  btn.addEventListener('click', function(){
    //获取要显示的tab id
    const tabId = this.getAttribute('data-tab')
    //隐藏所有tab内容元素
    document.querySelectorAll('.tc').forEach(function(tc){
      tc.classList.remove('active')
    })
    //显示当前tab内容元素
    const tab = document.querySelector('#'+tabId)
    tab.classList.add('active')
    //将active样式从当前按钮移动到新的按钮
    document.querySelectorAll('.btn').forEach(function(btn){
      btn.classList.remove('active')
    })
    this.classList.add('active')
  })
})

jQuery实现tab切换

HTML代码

与上面的例子要做出一样的tab切换功能,给出对应的HTML代码,控制对象为按钮(btn类名),tab内容为tc内容的div元素:

<div class="tabs">
  <button class="btn active" data-tab="tab1">Tab1</button>
  <button class="btn" data-tab="tab2">Tab2</button>
  <button class="btn" data-tab="tab3">Tab3</button>
  <div id="tab1" class="tc active">Tab1 Content</div>
  <div id="tab2" class="tc">Tab2 Content</div>
  <div id="tab3" class="tc">Tab3 Content</div>
</div>

CSS样式

与上面一样,为以上HTML元素添加CSS样式:

.tabs{
  display: flex;
  flex-direction: column;
  align-items: center;
}
.btn{
  padding: 8px 16px;
  background-color: #ddd;
  margin: 8px;
  border-radius: 4px;
  cursor: pointer;
}
.active{
  background-color: #4CAF50;
  color: white;
}
.tc{
  display: none;
  width: 100%;
  padding: 16px;
  text-align: center;
}
.tc.active{
  display: block;
}

JS代码

最后给出jQuery代码,实现点击切换功能

//获取btn按钮元素列表,并添加点击事件回调函数
$('.btn').click(function(){
  //获取要显示的tab id
  const tabId = $(this).data('tab')
  //隐藏所有tab内容元素
  $('.tc').removeClass('active')
  //显示当前tab内容元素
  $('#'+tabId).addClass('active')
  //将active样式从当前按钮移动到新的按钮
  $('.btn').removeClass('active')
  $(this).addClass('active')
})

通过上述两个示例可以发现,在实现tab切换功能时,jQuery使用起来更加方便简洁,但最终执行的代码比原生JS多一些。值得注意的是,使用jQuery需要在页面中引入jQuery库,在一些要求减少页面加载速度的场景中,建议使用原生JS实现该功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生js与jQuery实现简单的tab切换特效对比 - Python技术站

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

相关文章

  • html5开发三八女王节表白神器

    下面是HTML5开发“三八女王节表白神器”的完整攻略: 前言 三八女王节即将到来,HTML5技术可以为我们打造出一个极具创意的表白神器。以下教程将为你详细讲解制作过程。 准备工作 给你的页面起一个标题: <!DOCTYPE html> <html> <head> <title>三八女王节表白神器</tit…

    css 2023年6月10日
    00
  • IE6中DIV使用了relative不定义宽度导致right定位误差

    下面我将详细讲解“IE6中DIV使用了relative不定义宽度导致right定位误差”的攻略,包含以下几个方面的内容: 问题背景 原因解释 解决方法 1. 问题背景 在IE6中,如果使用相对定位(relative)不定义宽度的方式来布局,通常会出现right定位误差的问题,即right值无论设置为多少,元素都会向左偏移一定的距离。这会对页面布局造成很大的影…

    css 2023年6月9日
    00
  • CSS3的Border-radius轻松制作圆角

    当我们需要对一个html元素添加圆角时,可以使用CSS3的Border-radius属性。以下是该属性的语法: border-radius: value; 其中,value可以是一个或多个数值,数值的含义如下: 如果只给定一个值,那么四个圆角的大小相同。 如果给定两个值,第一个值为水平方向上的圆角半径,第二个值为垂直方向上的圆角半径。 如果给定四个值,则分别…

    css 2023年6月10日
    00
  • bootstrap-table实现表头固定以及列固定的方法示例

    要实现bootstrap-table表头固定和列固定,主要需要以下几个步骤: 一、引入jQuery库和bootstrap-table插件库。 在文档的head中引入jQuery库和bootstrap-table插件库,如下: <head> <script src="https://cdn.bootcss.com/jquery/3.…

    css 2023年6月9日
    00
  • 关于CSS Tooltips(鼠标经过时显示)的效果

    Sure! 首先,CSS Tooltips 是一种通过纯 CSS 实现的鼠标经过时会出现提示文字的效果,对于网站 UX 有很好的补充作用。接下来,我会详细讲解如何制作这种效果,包括两个示例说明。 制作 CSS Tooltips 效果 第一步:创建 HTML 结构 首先,在你的 HTML 文件中,需要创建一个包含提示文字的元素并加上一个 data 属性来表示提…

    css 2023年6月10日
    00
  • 详解HTML5中的picture元素响应式处理图片

    HTML5中的picture元素是一种用于响应式处理图片的标记语言,它能够根据设备屏幕大小及分辨率自动调整网页中的图片尺寸和质量,使得网站在不同设备上展示效果更加出色。下面将详细讲解如何使用picture元素实现响应式图片的处理。 1. 了解picture元素 picture元素提供了一种灵活的图片呈现方式,它的格式如下所示: <picture>…

    css 2023年6月10日
    00
  • 利用React实现虚拟列表的示例代码

    接下来我会为你详细讲解“利用React实现虚拟列表的示例代码”的攻略。 什么是虚拟列表 虚拟列表是一种优化长列表性能的方式,通常用于在前端渲染海量数据的场景。它的基本思路是只渲染可见区域的数据,而不是渲染整个列表内容。 如何利用React实现虚拟列表 以下是基于React实现虚拟列表的示例代码及其详细讲解: 步骤一:设置列表数据和列表项高度 根据虚拟列表的思…

    css 2023年6月10日
    00
  • 纯css3实现照片墙效果

    下面是详细讲解“纯CSS3实现照片墙效果”的攻略。 1. 实现思路 照片墙效果可以用CSS3的grid和flex来实现。其中,grid更适合实现较为复杂的照片墙效果,而flex则更适合实现简单的照片墙效果。下面,我们将分别讲解两种方法。 2. 使用grid实现照片墙效果 2.1 HTML结构 首先,我们需要创建一个div容器来包裹整个照片墙。然后,我们在容器…

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