Bootstrap

bootstrap的tab切换的效果更改


前言

bootstrap的tab标签有自带的样式,有些它自定义的class的一些属性比较的多,当我们用自定义样式去覆盖时往往会产生一些问题。


一、切换效果的更改

由于我按照官网给的模板更改时,tab的标签样式更改的不是很明显,于是我想用自定义去更改。
在这里插入图片描述
当我点击“上传图片时”,想让它变成蓝底白字以便区分另外一个,表示当前选中的状态。
tab标签的代码:

     <ul class="mb-3 navbar-nav ml-auto align-items-lg-center nav nav-pills nav-fill" role="tablist" id="myTab">
            <h6 class="dropdown-header font-weight-600 d-lg-none px-0">Menu</h6>
            <li class="nav-item ">
              <a class="btn btn-sm bg-white  d-lg-inline-flex" id="up-tab" data-toggle="tab" href="#up" role="tab" aria-controls="up" aria-selected="true">上传图片</a>
            </li>
            <li class="nav-item ">
              <a class="btn btn-sm bg-white  d-lg-inline-flex" id="pic-tab" data-toggle="tab" href="#pic" role="tab" aria-controls="contact" aria-selected="false">我的图片</a>
            </li>
          </ul>

由于很多的class名,bootstrap对其进行了处理,所以不了解哪一个类名是做啥的确实有点麻烦。

二、更改样式

首先自定义CSS样式:

      /* 确保选择器具有高优先级 */
      #myTab a.btn {
        background-color: #fff !important; /* 白色背景 */
        color: #007bff !important; /* 蓝色文字 */
      }

      #myTab a.btn-active {
        background-color: #007bff !important; /* 蓝色背景 */
        color: #fff !important; /* 白色文字 */
      }

之前用的 .类名 来表示一直不行,可能优先度不行。
用了Jquery的监听:

    <script>
      $(document).ready(function () {
        $('#myTab a').on('click', function (e) {
          e.preventDefault(); // 阻止默认行为
          $(this).tab('show'); // 显示点击的标签页

          // 移除所有按钮的激活样式
          $('#myTab a').removeClass('btn-active');
          // 将点击的按钮添加激活样式
          $(this).addClass('btn-active');
        });
      });
    </script>

这里注意,要放在所有引用后,不然没用。
在这里插入图片描述
在这里插入图片描述
效果就是我点击它展现当前的tab内容,然后蓝色表示当前选中。


三、总结

要覆盖掉原有的样式,首先要确保优先级高于它自带的属性,然后自定义js要放在导入所有js最后执行。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;