在不使用JQuery情况下,如何通过ES6只使用原生js去实现选项卡特效?

文章介绍了如何在不使用JQuery的情况下,利用ES6的语法特性,用原生JavaScript实现一个选项卡切换的特效插件。通过监听事件、动态修改class实现选中样式和内容显示,展示了纯JS编写此类插件的基本步骤和逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在一些特殊的项目当中,有时候可能无法使用JQuery,那么我们在不使用JQuery的情况下如何使用原生js去实现一个选项卡特效插件?

部分HTML代码

<div class="hu_party_title">
   <div class="tab_title tab_active1">党群工作</div>
   <div class="tab_title">党建工作</div>
   <div class="tab_title">团青工作</div>
   <div class="tab_title">团会工作</div>
 </div>
 <div class="hu_party_content">
   <div class="hu_party_tab_content tab_active2">党群工作</div>
   <div class="hu_party_tab_content">党建工作</div>
   <div class="hu_party_tab_content">团青工作</div>
   <div class="hu_party_tab_content">团会工作</div>
 </div>

部分CSS代码

.hu_party_title{
  width: 100%;
  height: 80px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.hu_party_title div{
  padding: 5px 30px;
  font-size: 20px;
  cursor: pointer;
}
.tab_title{
  color: #2F4A7E;
  border: 1px solid #2F4A7E;
}
.hu_party_tab_content{
  width: 100%;
  height: auto;
  min-height: 460px;
  display: none;
}
.tab_active1{
  background: #2F4A7E !important;
  color: white !important;
}
.tab_active2{
  display: block;
}

js部分代码(ES6)

//选项卡头部获取
const tab = document.getElementsByClassName('tab_title');
//选项卡内容获取
const tab_content = document.getElementsByClassName('hu_party_tab_content');
for (let i = 0; i < tab.length; i++) {
//监听选项卡头部点击事件
  tab[i].addEventListener('click',function () {
  	//判断除点击之外的同层级其他所有元素,移除点击添加的class效果
    for (let j = 0; j < tab.length; j++) {
      if( j !== i ){
        tab[j].classList.remove('tab_active1'); 
      }  
    };
    //点击选项卡头部选中样式添加
    tab[i].classList.add('tab_active1')
    for (let s = 0; s < tab_content.length; s++) {
    //选中对应的内容显示,不选中的内容消失
      if (i==s) {
        tab_content[s].classList.add('tab_active2');
      } else {
        tab_content[s].classList.remove('tab_active2');
      }
    }
  })
}

最终效果

在这里插入图片描述

通过以上三步,我们就简单完成了一个依据ES6标准纯原生js实现的一个选项卡特效插件Demo,使用js实现选项卡的效果,远不如JQuery方便,不可以链式调用,也不可以使用一些现成的方法,需要处理的元素,只能通过js去筛选去除,js实现的代码量远比JQuery多得多。

本文原创,原创不易,如需转载,请联系作者授权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值