Bootstrap 折叠

折叠插件能把大段内容收进面板,点击标题即可展开或收起;多个面板共用一个父容器时还能做成"手风琴",同一时间只展开一块,是 FAQ、侧边菜单的高频组件。

单个可折叠区域

触发按钮用 data-toggle="collapse",配合 href 或 data-target 指向要折叠的容器:

<button type="button" class="btn btn-primary" data-toggle="collapse"
        data-target="#demo">
  展开 / 收起内容
</button>
<div id="demo" class="collapse">
  <div class="well">这里是默认隐藏的详细内容。</div>
</div>

说明:点击按钮后,#demo 会以动画向下展开,出现灰色 well 内容块;再次点击则向上收起。

默认展开

给折叠区域额外加 in 类,页面加载时就处于展开状态:

<div id="openBox" class="collapse in">
  这段内容默认是展开的,点击上方按钮可收起。
</div>

手风琴效果

在父容器内用 data-parent 关联各面板,展开其中一个时其它面板会自动收起:

<div id="accordion">
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#p1">第一章</a>
      </h4>
    </div>
    <div id="p1" class="panel-collapse collapse in">
      <div class="panel-body">第一章的内容……</div>
    </div>
  </div>
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a data-toggle="collapse" data-parent="#accordion" href="#p2">第二章</a>
      </h4>
    </div>
    <div id="p2" class="panel-collapse collapse">
      <div class="panel-body">第二章的内容……</div>
    </div>
  </div>
</div>

说明:默认第一章展开;点击"第二章"时第一章自动收起、第二章展开,形成经典的手风琴折叠效果。

方法与事件

也可以用 collapse('show' / 'hide' / 'toggle') 编程控制,并监听展开收起事件:

<script>
  $('#p1').on('shown.bs.collapse', function () {
    console.log('展开动画已完成');
  });
  $('#p1').collapse('toggle');   // 切换展开状态
</script>

说明:show、hide 事件在动画开始前触发,shown、hidden 事件在动画结束后触发,可用来懒加载内容或更新箭头图标。

小结:折叠插件用一条 data-toggle="collapse" 即可展开收起;要手风琴互斥就补 data-parent 指向父容器,动画前后的四个事件留给需要联动逻辑的复杂页面。

笔记加载中…