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

实现简单的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日

相关文章

  • CSS 在IE6, IE7 和IE8中的差别

    CSS在不同的浏览器中会有不同的表现,其中IE6、IE7和IE8是老旧的IE版本,它们对CSS的支持存在一些差异。在本篇攻略中,我们会详细讲解这些差异,以及如何解决这些问题。 IE6、IE7和IE8的CSS差异 1. 盒模型的差异 在标准盒模型中,元素的尺寸包含内容、内边距和边框,而在IE6、IE7和IE8中,元素的尺寸只包含内容和边框,而不包括内边距。这意…

    css 2023年6月9日
    00
  • React使用emotion写css代码

    当我们使用React来构建Web应用程序时,通常使用CSS来美化和布局页面。而使用emotion可以帮助我们更轻松地编写和管理CSS,并将样式与组件紧密耦合。下面我将为你提供完整的React使用emotion写CSS代码的攻略。 安装emotion 首先,我们需要使用npm或yarn安装emotion: npm install –save @emotion…

    css 2023年6月9日
    00
  • Vue使用Swiper封装轮播图组件的方法详解

    下面是“Vue使用Swiper封装轮播图组件的方法详解”的完整攻略: Vue使用Swiper封装轮播图组件的方法详解 Swiper简介 Swiper是一个流行的开源移动端滑动组件,可以快速实现诸如轮播图、滑块切换等效果。在Vue中使用Swiper可以很方便地实现这些效果。 封装轮播图组件 我们可以使用Vue的单文件组件以及Swiper组件来封装我们的轮播图组…

    css 2023年6月10日
    00
  • CSS3中的clip-path使用攻略

    “CSS3中的clip-path使用攻略”指的是使用CSS3中的clip-path属性对网页元素进行剪裁处理的技巧。下面是完整的攻略: clip-path的概念和基础用法 clip-path是CSS3中的一个属性,用于对网页中的元素进行剪裁。使用它可以去掉元素的一部分区域,或是将元素剪裁成指定的形状。具体用法如下: .elem { clip-path: po…

    css 2023年6月10日
    00
  • 原生JS获取元素集合的子元素宽度实例

    下面是原生JS获取元素集合的子元素宽度实例的完整攻略: 定义问题 在处理网页布局时,经常需要获取元素集合下各子元素的宽度,但是在原生JS中直接获取元素的宽度是不够的,因为集合中的元素可能有不同的宽度值。因此,我们需要一种方法来获取集合中所有子元素的宽度值,以便进行后续的布局操作。 解决方案 首先,需要获取元素集合的父元素和子元素集合。可以使用document…

    css 2023年6月10日
    00
  • CSS3等相关属性制作分页导航实现代码

    下面我将为您详细讲解“CSS3等相关属性制作分页导航实现代码”的完整攻略。 1. 布局设计 首先,我们需要为分页导航设计一个基本的布局。一般情况下,我们可以采用<ul> <li>标签组合的方式来实现分页导航,如下所示: <ul class="pagination"> <li><a hr…

    css 2023年6月9日
    00
  • LESS 让css也支持变量,运算符,include,嵌套规则等等

    LESS是一种CSS预处理器,它可以让我们使用变量、运算符、函数、嵌套规则等等,增强我们在编写CSS时的灵活性和可维护性。下面我将详细介绍如何使用LESS。 安装LESS 首先需要安装LESS,有两种方式: 使用npm安装:在终端输入npm install -g less,全局安装LESS。 下载LESS官网最新版本:https://less.bootcss…

    css 2023年6月9日
    00
  • ie6不支持hover ie6 标签(除a标签)不支持伪类:hover解决方案

    首先,我们需要了解一下IE6的特性。IE6不支持使用:hover选择器来设定除了a标签以外的标签的样式。这意味着我们需要采用其他的解决方案来解决这个问题。 其中一种解决方案是通过使用JavaScript来实现hover效果。具体步骤如下: 引入jQuery库 在网页头部引入jQuery库: <script src="https://cdnjs…

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