原生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日

相关文章

  • HTML的dl、dt、dd标记制作表格对决Table制作表

    HTML 中的 <dl>、<dt>、<dd> 标记是用来制作定义列表的,使用这三个标记可以很方便地制作出类似于表格的结构。下面我们将介绍如何通过定义列表制作出类似于表格的结构,以及与传统的 <table> 标记制作出的表格对比。 1. <dl>、<dt>、<dd>标记制作表格…

    css 2023年6月10日
    00
  • JavaScript动态添加css样式和script标签

    关于JavaScript动态添加CSS样式和Script标签,具体步骤如下: 动态添加CSS样式 可以使用DOM创建一个新的style元素,然后将其插入到head标签中,代码如下: // 创建style元素 var style = document.createElement(‘style’); // 设置样式内容 style.innerHTML = &qu…

    css 2023年6月10日
    00
  • CSS使用盒模型实例讲解

    下面详细讲解一下“CSS使用盒模型实例讲解”的完整攻略。 盒模型是什么 盒模型,指的是网页中的元素在渲染时所占用的空间,由内到外一共包含四个部分:元素的内容区域(content)、元素的内边距区域(padding)、元素的边框区域(border)和元素的外边距区域(margin)。 盒模型的简单使用 在使用CSS中盒模型时,我们可以使用box-sizing属…

    css 2023年6月9日
    00
  • 纯css实现的下拉导航栏附html结构及css样式

    下面是纯CSS实现下拉导航栏的攻略: HTML结构 首先,我们需要设置HTML结构,一般情况下,我们会用<ul>和<li>标签进行设置。 <nav> <ul> <li><a href="#">Home</a></li> <li>&l…

    css 2023年6月10日
    00
  • vue单页面如何设置高度100%全屏

    要让Vue单页面全屏,需要对HTML、body和Vue组件元素进行高度设置。 设置HTML和body元素高度 首先,为了在不同的浏览器中保证一致的表现效果,我们需要对HTML和body元素的高度设置一致。可以使用CSS设置: html, body { height: 100%; } 设置Vue组件元素高度 接下来,我们需要对Vue组件元素的高度进行设置。 示…

    css 2023年6月9日
    00
  • Bootstrap的基本应用要点浅析

    下面我将为你详细讲解Bootstrap的基本应用要点浅析。 Bootstrap简介 Bootstrap是一个基于HTML、CSS、JavaScript开发的免费开源前端框架,由Twitter开发而来,采用了响应式设计(Responsive Web Design)的设计思路,用于快速构建适配移动设备的WEB应用程序和网站。Bootstrap功能丰富,外观美观,…

    css 2023年6月10日
    00
  • 使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法

    下面是使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法的完整攻略: 什么是CSS3滤镜 CSS3滤镜是指能够对Web页面上的元素进行像素级别的处理,包括亮度、对比度、饱和度、模糊、色彩变换等多种处理方式。CSS3滤镜是CSS的扩展属性,它是由CSS3提出的一组功能强大的特性,使得开发者可以在不使用图像软件的情况下为页面元素添加一些非常炫酷…

    css 2023年6月11日
    00
  • PHP-HTMLhtml重要知识点笔记(必看)

    PHP-HTML HTML 重要知识点笔记(必看) 在 Web 开发中,HTML 和 PHP 都是必不可少的技术,尤其是它们的结合,可以更好地实现动态网页和交互功能。本文主要介绍 PHP-HTML 中的一些重要知识点,对于初学者来说,尤其需要注意。 1. PHP-HTML 简介 PHP-HTML 是将 PHP 代码嵌入到 HTML 页面中,在服务器端执行 P…

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