以下是关于 Bootstrap 5 折叠(Collapse) 的详细指南,包含目录、内部锚链接、出站链接和参考资料。我将从基本概念、使用方法到高级功能逐一讲解,帮助您快速掌握 Collapse 的使用。


Bootstrap 5 折叠(Collapse)指南

目录

  1. 什么是 Collapse
  2. 基本使用
  1. 高级用法
  1. 注意事项
  2. 参考资料

什么是 Collapse

Collapse 是 Bootstrap 5 提供的一种交互组件,用于在用户点击触发器时显示或隐藏内容区域。它常用于 FAQ、手风琴菜单或节省页面空间的场景,基于 JavaScript 实现平滑的展开和收起效果。

出站链接:查看 Bootstrap 5 Collapse 官方文档


基本使用

HTML 结构

Collapse 使用 .collapse 类定义隐藏内容,通过触发器(如按钮)控制显示状态。

示例代码:

<button type="button" class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
  切换内容
</button>

<div class="collapse" id="collapseExample">
  <div class="card card-body">
    这里是折叠的内容区域。
  </div>
</div>
  • .collapse:定义可折叠的内容。
  • data-bs-toggle="collapse":启用折叠功能。
  • data-bs-target:指定折叠区域的 id
  • aria-expandedaria-controls:提升可访问性。

触发 Collapse

默认情况下,内容是隐藏的,点击触发器后展开。可以通过 data-bs-toggle 属性直接控制。


高级用法

多个目标

一个触发器可以控制多个折叠区域。

示例代码:

<button type="button" class="btn btn-primary" data-bs-toggle="collapse" data-bs-target=".multi-collapse" aria-expanded="false">
  切换多个内容
</button>

<div class="row">
  <div class="col">
    <div class="collapse multi-collapse" id="collapse1">
      <div class="card card-body">内容 1</div>
    </div>
  </div>
  <div class="col">
    <div class="collapse multi-collapse" id="collapse2">
      <div class="card card-body">内容 2</div>
    </div>
  </div>
</div>
  • .multi-collapse:通过类名关联多个目标。

手风琴效果

通过 .accordion 类实现手风琴效果,确保同一时间只有一个面板展开。

示例代码:

<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" aria-expanded="true" aria-controls="collapseOne">
        面板 1
      </button>
    </h2>
    <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        面板 1 的内容。
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header" id="headingTwo">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
        面板 2
      </button>
    </h2>
    <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        面板 2 的内容。
      </div>
    </div>
  </div>
</div>
  • .accordion:手风琴容器。
  • data-bs-parent:确保只有一个面板展开。

自定义样式

通过 CSS 调整折叠内容的外观。

示例代码:

<style>
  .custom-collapse .card-body {
    background-color: #f8f9fa;
    border: 1px solid #007bff;
  }
</style>

<button type="button" class="btn btn-primary" data-bs-toggle="collapse" data-bs-target="#customCollapse">
  切换自定义内容
</button>
<div class="collapse custom-collapse" id="customCollapse">
  <div class="card card-body">
    自定义样式的内容。
  </div>
</div>

JavaScript 控制

通过 JavaScript 动态控制折叠状态。

示例代码:

const collapse = new bootstrap.Collapse(document.getElementById('collapseExample'));
collapse.show(); // 显示内容
collapse.hide(); // 隐藏内容
collapse.toggle(); // 切换状态

// 监听事件
document.getElementById('collapseExample').addEventListener('shown.bs.collapse', function () {
  console.log('内容已展开');
});

出站链接:参考 Bootstrap 5 Collapse 方法


注意事项

  • 依赖性:Collapse 需要 Bootstrap 的 JavaScript 文件(bootstrap.bundle.min.js)。
  • 可访问性:确保使用 ARIA 属性(如 aria-expandedaria-controls)。
  • 动画性能:大量折叠内容可能影响页面性能,建议优化内容量。
  • 嵌套折叠:避免深度嵌套,可能导致交互复杂性增加。

参考资料

以下是与 Bootstrap 5 Collapse 相关的外部资源:


总结

Bootstrap 5 的 Collapse 组件是一个灵活的工具,支持简单的折叠切换和复杂的手风琴效果。通过简单的类和 JavaScript 控制,您可以实现动态的内容展示。如果您有具体问题或场景,请随时告诉我!