Bootstrap手风琴怎么只展开一个面板?
我用Bootstrap 5写了个手风琴,但点开一个面板后,其他已经打开的不会自动关闭,导致多个面板同时展开。不是说手风琴默认只能展开一个吗?
我检查了data-bs-parent属性,也加了容器ID,但还是不行。这是我的结构:
<div id="myAccordion">
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne">
Item 1
</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse show" data-bs-parent="#myAccordion">
<div class="accordion-body">Content 1</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo">
Item 2
</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#myAccordion">
<div class="accordion-body">Content 2</div>
</div>
</div>
</div>
是不是哪里写错了?为什么不能互斥展开?
data-bs-parent属性放错位置了。在 Bootstrap 5 里,
data-bs-parent应该放在触发按钮(accordion-button)上,而不是放在折叠面板(accordion-collapse)上。你现在把它放在div元素上,浏览器根本识别不到这个配置。正确的写法应该是这样:
改动有两个地方:
第一,每个按钮上都加上
data-bs-parent="#myAccordion",指向同一个父容器 ID。第二,
accordion-collapse的div上不再需要data-bs-parent属性,删掉就行。这里需要注意的是,Bootstrap 5 和 Bootstrap 4 在这点上正好相反。Bootstrap 4 是把
data-parent放在 collapse 元素上,而 Bootstrap 5 改成了放在触发按钮上。如果你之前是用 Bootstrap 4 迁移过来的,这点很容易踩坑。改完应该就正常了,点击任意一个面板,其他打开的会自动收起来,只保留一个展开状态。
class="accordion",加上它就能互斥展开了。