原生JavaScript实现Tab栏切换案例

Tab栏是前端常见的一个业务。下面是基于html+css+javascript的tab栏代码示例:

<!DOCTYPE html>
<html>
  <head>
    <title>Tab栏切换示例</title>
    <style>
      /* 设置Tab栏容器的样式 */
      .tab-container {
        display: flex;
        align-items: center;
        border-bottom: 1px solid #ccc;
        width: 600px;
        margin: 0 auto;
      }
      /* 设置Tab按钮的样式 */
      .tab-item {
        padding: 10px;
        cursor: pointer;
        font-size: 20px;
        color: #333;
        border-bottom: 2px solid transparent;
        transition: all 0.3s ease-in-out;
      }
      /* 设置当前Tab按钮的样式 */
      .tab-item.active {
        color: #f00;
        border-bottom-color: #f00;
      }
      /* 设置Tab内容容器的样式 */
      .tab-content-container {
        width: 600px;
        margin: 0 auto;
        padding-top: 20px;
      }
      /* 设置Tab内容的样式 */
      .tab-content {
        display: none;
      }
      /* 设置当前Tab内容的样式 */
      .tab-content.active {
        display: block;
      }
    </style>
  </head>
  <body>
    <div class="tab-container">
      <!-- Tab按钮 -->
      <div class="tab-item active" data-target="tab1">Tab 1</div>
      <div class="tab-item" data-target="tab2">Tab 2</div>
      <div class="tab-item" data-target="tab3">Tab 3</div>
    </div>
    <div class="tab-content-container">
      <!-- Tab内容 -->
      <div class="tab-content active" data-tab="tab1">这是Tab 1的内容</div>
      <div class="tab-content" data-tab="tab2">这是Tab 2的内容</div>
      <div class="tab-content" data-tab="tab3">这是Tab 3的内容</div>
    </div>
    <script>
      // 获取Tab按钮和Tab内容的容器
      var tabContainer = document.querySelector('.tab-container');
      var tabContentContainer = document.querySelector('.tab-content-container');
      // 获取所有的Tab按钮和Tab内容
      var tabItems = document.querySelectorAll('.tab-item');
      var tabContents = document.querySelectorAll('.tab-content');
      // 遍历所有的Tab按钮
      for (var i = 0; i < tabItems.length; i++) {
        // 给每个Tab按钮添加点击事件
        tabItems[i].addEventListener('click', function () {
          // 获取被点击的Tab按钮的data-target属性值,即对应的Tab内容的data-tab属性值
          var target = this.getAttribute('data-target');
          // 遍历所有的Tab内容,隐藏除了被点击的Tab内容以外的所有内容
          for (var j = 0; j < tabContents.length; j++) {
            if (tabContents[j].getAttribute('data-tab') === target) {
              tabContents[j].classList.add('active');
            } else {
              tabContents[j].classList.remove('active');
            }
          }
          // 遍历所有的Tab按钮,取消除了被点击的Tab按钮以外的所有按钮的active类名
          for (var k = 0; k < tabItems.length; k++) {
            if (tabItems[k] === this) {
              tabItems[k].classList.add('active');
            } else {
              tabItems[k].classList.remove('active');
            }
          }
        });
      }
    </script>
  </body>
</html>

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员禅心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值