Bootstrap5 折叠组件

Bootstrap 5 折叠组件

使用折叠组件可以轻松显示和隐藏内容,创建交互式界面。

什么是折叠组件?

折叠(Collapse)是Bootstrap 5中的一个JavaScript插件,用于显示和隐藏内容。

通过折叠组件,您可以:

  • 创建可展开/折叠的内容区域
  • 构建手风琴式菜单
  • 实现多目标内容控制
  • 添加平滑的过渡动画

折叠组件不需要任何自定义JavaScript代码,只需使用data属性即可实现功能。

折叠效果演示

这是一个折叠内容的示例。点击按钮可以显示或隐藏此内容。 折叠组件提供了平滑的过渡动画,使界面更加友好。

点击上方按钮查看折叠效果。

基本用法

按钮触发折叠

使用按钮控制折叠内容的显示和隐藏:

这是一些占位内容,用于折叠组件演示。它默认是隐藏的,直到通过按钮显示。 它通过JavaScript实现平滑的过渡动画。
<button class="btn btn-primary" type="button"
        data-bs-toggle="collapse"
        data-bs-target="#collapseExample">
  点击切换内容
</button>

<div class="collapse" id="collapseExample">
  <div class="card card-body">
    这是一些占位内容,用于折叠组件演示。它默认是隐藏的,直到通过按钮显示。
    它通过JavaScript实现平滑的过渡动画。
  </div>
</div>

链接触发折叠

使用链接控制折叠内容的显示和隐藏:

点击链接切换内容

这是通过链接触发的折叠内容。点击上方的链接可以显示或隐藏此内容。 折叠组件支持多种触发方式。
<a class="btn btn-primary" data-bs-toggle="collapse"
   href="#collapseExample2" role="button">
  点击链接切换内容
</a>

<div class="collapse" id="collapseExample2">
  <div class="card card-body">
    这是通过链接触发的折叠内容。点击上方的链接可以显示或隐藏此内容。
    折叠组件支持多种触发方式。
  </div>
</div>

默认展开的内容

使用 .show 类使折叠内容默认展开:

这个折叠内容默认是展开的,因为添加了 .show 类。 点击按钮可以隐藏或再次显示此内容。
<button class="btn btn-primary" type="button"
        data-bs-toggle="collapse"
        data-bs-target="#collapseExample3">
  切换内容
</button>

<div class="collapse show" id="collapseExample3">
  <div class="card card-body">
    这个折叠内容默认是展开的,因为添加了 .show 类。
    点击按钮可以隐藏或再次显示此内容。
  </div>
</div>

多目标控制

使用一个按钮控制多个折叠内容:

第一个折叠内容区域。
第二个折叠内容区域。
<button class="btn btn-primary" type="button"
        data-bs-toggle="collapse"
        data-bs-target=".multi-collapse">
  切换多个内容
</button>

<div class="row">
  <div class="col">
    <div class="collapse multi-collapse" id="multiCollapseExample1">
      <div class="card card-body">
        第一个折叠内容区域。
      </div>
    </div>
  </div>
  <div class="col">
    <div class="collapse multi-collapse" id="multiCollapseExample2">
      <div class="card card-body">
        第二个折叠内容区域。
      </div>
    </div>
  </div>
</div>

手风琴效果

手风琴是折叠组件的一种特殊用法,可以创建互斥的内容区域:

这是第一个手风琴项目的内容。 它默认是展开的,因为添加了 .show 类。 手风琴允许同时只展开一个项目,当您展开另一个项目时,当前展开的项目会自动关闭。

这是第二个手风琴项目的内容。 它默认是隐藏的,直到您点击标题展开。 手风琴效果通过 data-bs-parent 属性实现,该属性将所有折叠项目分组。

这是第三个手风琴项目的内容。 手风琴是组织和展示相关内容的绝佳方式, 特别是当您有多个内容部分但只想一次显示一个时。
<div class="accordion" id="accordionExample">
  <div class="accordion-item">
    <h2 class="accordion-header" id="headingOne">
      <button class="accordion-button" type="button"
              data-bs-toggle="collapse"
              data-bs-target="#collapseOne">
        手风琴项目 #1
      </button>
    </h2>
    <div id="collapseOne" class="accordion-collapse collapse show"
         data-bs-parent="#accordionExample">
      <div class="accordion-body">
        这是第一个手风琴项目的内容。
      </div>
    </div>
  </div>
  <!-- 更多手风琴项目 -->
</div>

JavaScript方法

手动控制折叠

除了使用data属性,您还可以通过JavaScript控制折叠组件:

这个折叠内容通过JavaScript控制。点击上方的按钮可以切换、显示或隐藏此内容。
// 获取折叠实例
var myCollapse = new bootstrap.Collapse(document.getElementById('jsCollapseExample'))

// 切换折叠状态
document.getElementById('toggleButton').addEventListener('click', function () {
  myCollapse.toggle()
})

// 显示内容
document.getElementById('showButton').addEventListener('click', function () {
  myCollapse.show()
})

// 隐藏内容
document.getElementById('hideButton').addEventListener('click', function () {
  myCollapse.hide()
})

事件处理

折叠组件提供了事件监听功能,可以在折叠状态变化时执行代码:

这个折叠内容会触发事件。查看浏览器控制台可以看到事件日志。
var myCollapse = document.getElementById('eventCollapseExample')

myCollapse.addEventListener('show.bs.collapse', function () {
  console.log('折叠内容开始显示')
})

myCollapse.addEventListener('shown.bs.collapse', function () {
  console.log('折叠内容完全显示')
})

myCollapse.addEventListener('hide.bs.collapse', function () {
  console.log('折叠内容开始隐藏')
})

myCollapse.addEventListener('hidden.bs.collapse', function () {
  console.log('折叠内容完全隐藏')
})

最佳实践

选择合适的触发器
  • 使用按钮或链接作为折叠触发器
  • 确保触发器元素具有 data-bs-toggle="collapse" 属性
  • 使用 data-bs-targethref 指向折叠内容
  • 为可访问性添加适当的ARIA属性
设计考虑
  • 为折叠内容提供清晰的视觉指示
  • 考虑在折叠标题中使用图标表示状态
  • 确保折叠内容在展开时有足够的空间
  • 测试折叠组件在各种设备上的表现
可访问性
  • 为折叠触发器添加适当的ARIA属性
  • 使用 aria-expanded 表示状态
  • 使用 aria-controls 关联触发器与内容
  • 确保键盘导航正常工作
性能优化
  • 避免在折叠内容中放置过多大型资源
  • 考虑使用懒加载技术加载折叠内容
  • 限制同时展开的折叠项目数量
  • 在移动设备上测试性能表现

掌握折叠组件后,下一步学习其他交互组件

Bootstrap 5提供了丰富的交互组件,如模态框、标签页和工具提示等。

学习模态框 查看所有组件