javascript - Bootstrap 5 选项卡窗格无法正确使用 flexbox
问题描述
我直接从文档页面使用准系统 Bootstrap 5 选项卡(药丸)设置:
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<a class="nav-link active" id="pills-home-tab" data-bs-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true">Home</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="pills-profile-tab" data-bs-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</a>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">...</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">...</div>
<div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">...</div>
</div>
tab-pane
然后我用s填充floating-div
s:
.floating-div {
float: left;
display: block;
height: 100px;
width: 100px;
border: 1px solid #dddddd;
margin: 10px 10px 0 0;
}
.pane-1 {
background-color: green;
}
.pane-2 {
background-color: orange;
}
.pane-3 {
background-color: blue;
}
到目前为止,一切都按预期工作 - JsFiddle。
然后我将标准引导程序的 flexbox 类应用于tab-pane
s 以根据我的喜好对齐选项卡内容d-flex flex-wrap justify-content-between
。
那就是整个事情走下坡路的地方- JsFiddle。
第一个内容的tab-pane
布局方式是我所追求的,但由于某种原因,所有其他tab-pane
s 中的内容都被向下移动了。不仅如此,而且,在仔细检查时,似乎每个tab-pane
s 都包含floating-div
应该分布在 3 个不同 div 中的所有 s,其中一些只是不可见的......
现在我的问题是:我的 CSS 或我使用 Bootstrap 的 flexbox 类的方式有问题,还是 Bootstrap 中的错误?
解决方案
因为“ .d-flex
”属性带有“ display: flex! Important
”说明符。
但是“ .tab-content> .tab-pane
”只使用“ display: none
”格式。在这种情况下,“ ”将占主导地位,并且在所有情况下都.d-flex
将保持为“ ”。display: flex
另一方面,由于“ opacity: 0
”是不可见的,但它会占用空间。
为了解决这个问题,
方法一:
在“”中创建一个新元素.tab-pane
。
<div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
<div class="d-flex flex-wrap justify-content-between">
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
</div>
</div>
方法二:
写一个新的类。" .d-maybe-flex
"
.d-maybe-flex
{
display: flex;
}
<div class="tab-pane fade show active d-maybe-flex flex-wrap justify-content-between" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
</div>
示例 1
.floating-div {
float: left;
display: block;
height: 100px;
width: 100px;
border: 1px solid #dddddd;
margin: 10px 10px 0 0;
}
.pane-1 {
background-color: green;
}
.pane-2 {
background-color: orange;
}
.pane-3 {
background-color: blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<!-- JavaScript Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<a class="nav-link active" id="pills-home-tab" data-bs-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true">Green</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="pills-profile-tab" data-bs-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false">Ornage</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">Blue</a>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
<div class="d-flex flex-wrap justify-content-between">
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
</div>
</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">
<div class="d-flex flex-wrap justify-content-between">
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
</div>
</div>
<div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">
<div class="d-flex flex-wrap justify-content-between">
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
</div>
</div>
</div>
示例 2
.d-maybe-flex {
display: flex
}
.floating-div {
float: left;
display: block;
height: 100px;
width: 100px;
border: 1px solid #dddddd;
margin: 10px 10px 0 0;
}
.pane-1 {
background-color: green;
}
.pane-2 {
background-color: orange;
}
.pane-3 {
background-color: blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
<!-- JavaScript Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<a class="nav-link active" id="pills-home-tab" data-bs-toggle="pill" href="#pills-home" role="tab" aria-controls="pills-home" aria-selected="true">Green</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="pills-profile-tab" data-bs-toggle="pill" href="#pills-profile" role="tab" aria-controls="pills-profile" aria-selected="false">Ornage</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">Blue</a>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active d-maybe-flex flex-wrap justify-content-between" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
<div class="floating-div pane-1"></div>
</div>
<div class="tab-pane fade d-maybe-flex flex-wrap justify-content-between" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
<div class="floating-div pane-2"></div>
</div>
<div class="tab-pane fade d-maybe-flex flex-wrap justify-content-between" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
<div class="floating-div pane-3"></div>
</div>
</div>
推荐阅读
- javascript - 如何修复 - TypeError:无法读取 null 的属性“评论”
- javascript - PropTypes.defaultProps 用于无状态组件中的函数
- javascript - 在 Javascript 中查找下周的日期
- java - Swagger 与 Java Play 框架的集成
- webrtc - 向不同的对等点多次添加轨道
- angular - 删除时总计不更新
- c++ - 'std::for_each' 的问题,没有按预期将函数映射到向量上
- kubernetes - 启用 PodSecurityPolicy 后,我是否需要为所有 44 个系统服务帐户提供“特权”策略的“使用”动词?
- angular - 角度问题:错误 TS2554:预期 0 个参数,但得到 3 个
- python - 如何检查 ManyToManyField 表以更新 m2m 取决于父字段 django