メインコンテンツにスキップ ドキュメント ナビゲーションにスキップ
Check
in English

崩壊

いくつかのクラスと JavaScript プラグインを使用して、プロジェクト全体のコンテンツの表示を切り替えます。

使い方

コンテンツの表示と非表示には、collapse JavaScript プラグインが使用されます。ボタンまたはアンカーは、切り替える特定の要素にマップされるトリガーとして使用されます。要素を折りたたむとheight、現在の値からにアニメーション化され0ます。paddingCSS がアニメーションを処理する方法を考えると、.collapse要素では使用できません。代わりに、クラスを独立したラッピング要素として使用してください。

このコンポーネントのアニメーション効果は、 prefers-reduced-motionメディア クエリに依存します。アクセシビリティ ドキュメントの縮小モーション セクションを参照してください 。

下のボタンをクリックして、クラスの変更によって別の要素を表示および非表示にします。

  • .collapseコンテンツを非表示にします
  • .collapsing遷移中に適用されます
  • .collapse.showコンテンツを表示

通常、data-bs-target属性を持つボタンを使用することをお勧めします。セマンティックの観点からは推奨されませんが、href属性 (およびrole="button") を含むリンクを使用することもできます。どちらの場合も、data-bs-toggle="collapse"が必要です。

Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
html
<p>
  <a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
    Link with href
  </a>
  <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
    Button with data-bs-target
  </button>
</p>
<div class="collapse" id="collapseExample">
  <div class="card card-body">
    Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
  </div>
</div>

水平

折りたたみプラグインは、水平折りたたみもサポートしています。.collapse-horizontal修飾子クラスを追加して、width代わりに遷移し、直接の子要素にheighta を設定します。width独自のカスタム Sass を作成したり、インライン スタイルを使用したり、幅ユーティリティを使用したりしてください。

min-height以下の例には、ドキュメントでの過度の再描画を避けるためのセットがありますが、これは明示的に必須ではないことに 注意してください 。子要素ののみが必要です。width

This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
html
<p>
  <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWidthExample" aria-expanded="false" aria-controls="collapseWidthExample">
    Toggle width collapse
  </button>
</p>
<div style="min-height: 120px;">
  <div class="collapse collapse-horizontal" id="collapseWidthExample">
    <div class="card card-body" style="width: 300px;">
      This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
    </div>
  </div>
</div>

複数のターゲット

<button>orは、 or属性<a>のセレクターを使用して複数の要素を参照することで、複数の要素を表示および非表示にすることができます。複数のorがそれぞれのor属性で要素を参照している場合、要素を表示および非表示にすることができますhrefdata-bs-target<button><a>hrefdata-bs-target

Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
html
<p>
  <a class="btn btn-primary" data-bs-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
  <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
  <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-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">
        Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
      </div>
    </div>
  </div>
  <div class="col">
    <div class="collapse multi-collapse" id="multiCollapseExample2">
      <div class="card card-body">
        Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
      </div>
    </div>
  </div>
</div>

アクセシビリティ

aria-expanded必ずコントロール要素に追加してください。この属性は、コントロールに関連付けられた折りたたみ可能な要素の現在の状態を、スクリーン リーダーや同様の支援技術に明示的に伝えます。折りたたみ可能な要素がデフォルトで閉じられている場合、コントロール要素の属性の値はaria-expanded="false"です。showクラスを使用して折りたたみ可能な要素をデフォルトで開くように設定した場合はaria-expanded="true"、代わりにコントロールに設定します。プラグインは、折りたたみ可能な要素が開いているか閉じているか (JavaScript を介して、またはユーザーが同じ折りたたみ可能な要素に関連付けられている別のコントロール要素をトリガーしたため) に基づいて、コントロールのこの属性を自動的に切り替えます。コントロール要素の HTML 要素がボタンでない場合 (例:<a>または<div>)、属性role="button"要素に追加する必要があります。

コントロール要素が単一の折りたたみ可能な要素をターゲットにしている場合 (つまり、属性がセレクターdata-bs-targetを指している場合)、折りたたみ可能な要素の を含む属性をコントロール要素に追加する必要があります。最新のスクリーン リーダーや同様の支援技術は、この属性を利用して、折りたたみ可能な要素自体に直接移動するための追加のショートカットをユーザーに提供します。idaria-controlsid

Bootstrap の現在の実装は、 ARIA オーサリング プラクティス ガイド アコーディオン パターンで説明されているさまざまなオプションのキーボード操作をカバーしていないことに注意してください。カスタム JavaScript でこれらを自分で含める必要があります。

サス

変数

$transition-collapse:         height .35s ease;
$transition-collapse-width:   width .35s ease;

クラス

折りたたみ遷移クラスは、scss/_transitions.scss複数のコンポーネント (折りたたみとアコーディオン) で共有されるため、 にあります。

.collapse {
  &:not(.show) {
    display: none;
  }
}

.collapsing {
  height: 0;
  overflow: hidden;
  @include transition($transition-collapse);

  &.collapse-horizontal {
    width: 0;
    height: auto;
    @include transition($transition-collapse-width);
  }
}

使用法

崩壊プラグインは、いくつかのクラスを利用して、重労働を処理します。

  • .collapseコンテンツを非表示にします
  • .collapse.show内容を示します
  • .collapsingトランジションの開始時に追加され、終了時に削除されます

これらのクラスは にあります_transitions.scss

データ属性経由

data-bs-toggle="collapse"要素にとを追加するだけdata-bs-targetで、1 つまたは複数の折りたたみ可能な要素の制御を自動的に割り当てることができます。このdata-bs-target属性は、折りたたみを適用する CSS セレクターを受け入れます。collapse折りたたみ可能な要素にクラスを必ず追加してください。デフォルトで開くようにしたい場合は、追加の class を追加しますshow

折りたたみ可能な領域にアコーディオンのようなグループ管理を追加するには、 data 属性を追加しますdata-bs-parent="#selector"。詳しくはアコーディオンのページをご覧ください。

JavaScript 経由

次を使用して手動で有効にします。

const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))

オプション

オプションはデータ属性または JavaScript を介して渡すことができるためdata-bs-、 のようにオプション名を に追加できますdata-bs-animation="{value}"。データ属性を介してオプションを渡すときは、オプション名のケース タイプを「camelCase」から「kebab-case 」に変更してください。たとえば、data-bs-custom-class="beautifier"の代わりに を使用しdata-bs-customClass="beautifier"ます。

Bootstrap 5.2.0 の時点で、すべてのコンポーネントは、単純なコンポーネント構成を JSON 文字列として格納できる実験的な予約済みデータ属性をサポートしています。data-bs-config要素にdata-bs-config='{"delay":0, "title":123}'data-bs-title="456"属性がある場合、最終的なtitle値は に456なり、個別のデータ属性が で指定された値をオーバーライドしますdata-bs-config。さらに、既存のデータ属性は、 のような JSON 値を格納できますdata-bs-delay='{"show":0,"hide":150}'

名前 タイプ デフォルト 説明
parent セレクター、DOM 要素 null 親が指定されている場合、この折りたたみ可能なアイテムが表示されると、指定された親の下にあるすべての折りたたみ可能な要素が閉じられます。(従来のアコーディオンの動作に似ています - これはクラスに依存しますcard)。属性は、ターゲットの折りたたみ可能領域に設定する必要があります。
toggle ブール値 true 呼び出し時に折りたたみ可能な要素を切り替えます。

メソッド

非同期メソッドと遷移

すべての API メソッドは非同期であり、遷移を開始します。トランジションが開始されるとすぐに呼び出し元に戻りますが、トランジションが終了する前に戻ります。さらに、遷移中のコンポーネントでのメソッド呼び出しは無視されます。

詳細については、JavaScript のドキュメントを参照してください

折りたたみ可能な要素としてコンテンツをアクティブにします。オプションのオプションを受け入れますobject

次の例のように、コンストラクターを使用して折りたたみインスタンスを作成できます。

const bsCollapse = new bootstrap.Collapse('#myCollapse', {
  toggle: false
})
方法 説明
dispose 要素の崩壊を破棄します。(DOM要素に格納されたデータを削除します)
getInstance DOM 要素に関連付けられた折りたたみインスタンスを取得できる静的メソッド。次のように使用できますbootstrap.Collapse.getInstance(element)
getOrCreateInstance DOM 要素に関連付けられた折りたたみインスタンスを返すか、初期化されていない場合は新しいインスタンスを作成する静的メソッド。次のように使用できますbootstrap.Collapse.getOrCreateInstance(element)
hide 折りたたみ可能な要素を非表示にします。折りたたみ可能な要素が実際に非表示になる前 (たとえば、イベントが発生する前)に呼び出し元に戻ります。hidden.bs.collapse
show 折りたたみ可能な要素を示します。折りたたみ可能な要素が実際に表示される前 (たとえば、イベントが発生する前)に呼び出し元に戻ります。shown.bs.collapse
toggle 折りたたみ可能な要素を表示または非表示に切り替えます。折りたたみ可能な要素が実際に表示または非表示になる前 (つまり、orイベントが発生する前)に呼び出し元に戻ります。shown.bs.collapsehidden.bs.collapse

イベント

Bootstrap の collapse クラスは、collapse 機能にフックするためのいくつかのイベントを公開します。

イベントタイプ 説明
hide.bs.collapse hideこのイベントは、メソッドが呼び出されるとすぐに発生します。
hidden.bs.collapse このイベントは、折りたたみ要素がユーザーから隠されているときに発生します (CSS トランジションが完了するのを待ちます)。
show.bs.collapse showこのイベントは、インスタンス メソッドが呼び出されるとすぐに発生します。
shown.bs.collapse このイベントは、折りたたみ要素がユーザーに表示されると発生します (CSS トランジションが完了するのを待ちます)。
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
  // do something...
})