Bootstrap4 手风琴 - 在不使用 JavaScript 的情况下全部折叠
Bootstrap4 Accordion - Collapse All without use of JavaScript
这是 Bootstrap4 文档中的代码片段,位于:https://getbootstrap.com/docs/4.0/components/collapse/
<p>
<a class="btn btn-primary" data-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
</p>
<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample1">
<div class="card card-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
</div>
</div>
</div>
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample2">
<div class="card card-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
</div>
</div>
</div>
</div>
我正在尝试在我的 Bootstrap 手风琴中实现类似的 Collapse/Expand 所有功能。我发现这个实现并不像我预期的那样工作。这只是将面板的状态更改为与当前相反的状态。
例如:
面板 1:隐藏
面板 2:隐藏
面板 3:隐藏
变成
面板 1:可见
面板 2:可见
面板 3:可见
这很好,但是例如说状态是这样的:
面板 1:隐藏
面板 2:可见
面板 3:隐藏
我希望 Collapse/Expand 全部隐藏或全部可见,但实际上变成了:
面板 1:可见
面板 2:隐藏
面板 3:可见
有没有一种方法可以使用 Bootstrap4 打开或关闭所有面板?
E:
因此,如果我要折叠的所有面板都具有 class="multi-collapse",我可以在我的切换按钮中使用 data-target=".multi-collapse" 来折叠它们。
当面板折叠时,它的 class 是“multi-collapse collapse”,当它可见时,class 是“multi-collapse collapse show”。如果我可以为数据目标指定多个 classes,我可以使目标根据条件进行多次折叠折叠或多次折叠折叠显示...有什么方法可以指定多个 classes 用于数据目标?
即使有一种方法可以折叠手风琴中的每个面板也能达到目的。
E2:
感谢 Zim
<input type="button" class="btn btn-primary" data-toggle="collapse" [attr.data-target]="allExpanded ? '.multi-collapse:not(.show)': '.multi-collapse.show'" (click)="allExpanded = !allExpanded" [attr.value]="allExpanded ? 'Collapse All': 'Expand All'" >
这是一个 Angular 项目,因此我能够使用组件文件中的布尔变量跟踪单个按钮的状态。
不使用 JavaScript 的唯一方法 是使用 2 个单独的按钮。 data-target
将仅针对打开的 .multi-collapse.show
或关闭的 .multi-collapse:not(.show)
面板..
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse:not(.show)">Show all</button>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse.show">Hide all</button>
为了使用单个按钮执行此操作,您需要 JS 来跟踪折叠面板的状态。
这是 Bootstrap4 文档中的代码片段,位于:https://getbootstrap.com/docs/4.0/components/collapse/
<p>
<a class="btn btn-primary" data-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
</p>
<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample1">
<div class="card card-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
</div>
</div>
</div>
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample2">
<div class="card card-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
</div>
</div>
</div>
</div>
我正在尝试在我的 Bootstrap 手风琴中实现类似的 Collapse/Expand 所有功能。我发现这个实现并不像我预期的那样工作。这只是将面板的状态更改为与当前相反的状态。
例如:
面板 1:隐藏
面板 2:隐藏
面板 3:隐藏
变成
面板 1:可见
面板 2:可见
面板 3:可见
这很好,但是例如说状态是这样的:
面板 1:隐藏
面板 2:可见
面板 3:隐藏
我希望 Collapse/Expand 全部隐藏或全部可见,但实际上变成了:
面板 1:可见
面板 2:隐藏
面板 3:可见
有没有一种方法可以使用 Bootstrap4 打开或关闭所有面板?
E:
因此,如果我要折叠的所有面板都具有 class="multi-collapse",我可以在我的切换按钮中使用 data-target=".multi-collapse" 来折叠它们。
当面板折叠时,它的 class 是“multi-collapse collapse”,当它可见时,class 是“multi-collapse collapse show”。如果我可以为数据目标指定多个 classes,我可以使目标根据条件进行多次折叠折叠或多次折叠折叠显示...有什么方法可以指定多个 classes 用于数据目标?
即使有一种方法可以折叠手风琴中的每个面板也能达到目的。
E2:
感谢 Zim
<input type="button" class="btn btn-primary" data-toggle="collapse" [attr.data-target]="allExpanded ? '.multi-collapse:not(.show)': '.multi-collapse.show'" (click)="allExpanded = !allExpanded" [attr.value]="allExpanded ? 'Collapse All': 'Expand All'" >
这是一个 Angular 项目,因此我能够使用组件文件中的布尔变量跟踪单个按钮的状态。
不使用 JavaScript 的唯一方法 是使用 2 个单独的按钮。 data-target
将仅针对打开的 .multi-collapse.show
或关闭的 .multi-collapse:not(.show)
面板..
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse:not(.show)">Show all</button>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target=".multi-collapse.show">Hide all</button>
为了使用单个按钮执行此操作,您需要 JS 来跟踪折叠面板的状态。