とほほのBootstrap 4入門

トップ > Bootstrap 4入門 > コラプス

折りたたみ

.collapse は崩壊させる、つぶす、折りたたむなどの意味を持ちます。折りたたまれた状態で表示され、data-toggle="collapse" を指定した <a><button> によって開閉を切り替えます。ターゲット要素は href="#..."data-target="#..." で指定します。aria-*="..." は読み上げブラウザなどに付加情報を与えるもので、aria-expand="..." は開閉状態、aria-controls="..." は対象を示します。トランスレーション中の要素には .collapsing が設定されます。

Sample
Hypertext Markup Language (HTML) is ...
Code
<button class="btn btn-primary"
    data-toggle="collapse"
    data-target="#example-1"
    aria-expand="false"
    aria-controls="example-1">Button</button>
<div class="collapse" id="example-1">
  <div class="card card-body">
    Hypertext Markup Language (HTML) is ...
  </div>
</div>

<a> を用いる場合は data-target="#..." の代わりに href="#..." を使用します。また、ボタンであることを示す role="button" を追加しています。

Sample
Link
Hypertext Markup Language (HTML) is ...
Code
<a class="btn btn-primary"
    data-toggle="collapse"
    href="#example-2"
    role="button"
    aria-expand="false"
    aria-controls="example-2">HTML</a>
<div class="collapse" id="example-2">
  <div class="card card-body">
    Hypertext Markup Language (HTML) is ...
  </div>
</div>

マルチターゲット

data-target="..." にクラス名を指定すると、複数のターゲットを開閉することができます。

Sample
Target-A
Target-B
Code
<button class="btn btn-primary" type="button"
    data-toggle="collapse"
    data-target=".example-3"
    aria-expanded="false"
    aria-controls="example-3a example-3b">
  Multi target
</button>
<div class="row">
  <div class="col">
    <div class="collapse example-3" id="example-3a">
      <div class="card card-body">
        Target-A
      </div>
    </div>
  </div>
  <div class="col">
    <div class="collapse example-3" id="example-3b">
      <div class="card card-body">
        Target-B
      </div>
    </div>
  </div>
</div>

アコーディオン

.accordion を用いて、アコーディオン式のカードを表示します。

Sample
Card A
Card B
Code
<div class="accordion" id="accordion-4">
  <div class="card">
    <div class="card-header" id="header-4a">
      <button class="btn btn-link" type="button"
          data-toggle="collapse" data-target="#card-4a"
          aria-expanded="true" aria-controls="card-4a">
        Header A
      </button>
    </div>
    <div id="card-4a" class="collapse"
        aria-labelledby="header-4a" data-parent="#accordion-4">
      <div class="card-body">
        Card A
      </div>
    </div>
  </div>
  <div class="card">
    <div class="card-header" id="header-4b">
      <button class="btn btn-link" type="button"
          data-toggle="collapse" data-target="#card-4b"
          aria-expanded="false" aria-controls="card-4b">
        Header B
      </button>
    </div>
    <div id="card-4b" class="collapse"
        aria-labelledby="header-4b" data-parent="#accordion-4">
      <div class="card-body">
        Card B
      </div>
    </div>
  </div>
</div>

JavaScriptによる制御

JavaScript の collapse() で表示・非表示を制御することもできます。'show' は表示、'hide' は非表示、'toggle' はトグルを意味します。'dispose' は「要素の collapse を破壊する」とありますが、よくわかりません。

Sample
Hypertext Markup Language (HTML) is ...
Code
<button onclick="$('#example-5').collapse('show')">Show</button>
<button onclick="$('#example-5').collapse('hide')">Hide</button>
<button onclick="$('#example-5').collapse('toggle')">Toggle</button>
<button onclick="$('#example-5').collapse('dispose')">Dispose</button>
<div class="collapse" id="example-5">
  <div class="card card-body">
    Hypertext Markup Language (HTML) is ...
  </div>
</div>

Copyright (C) 2015-2019 杜甫々
初版:2015年9月6日 最終更新:2019年1月6日
http://www.tohoho-web.com/bootstrap/collapse.html