メインコンテンツへスキップ ドキュメントナビゲーションへスキップ

アコーディオン

Collapse JavaScriptプラグインと組み合わせて、垂直に折りたたみ可能なアコーディオンを作成します。

このページの内容

動作方法

アコーディオンは、折りたたみ可能にするために内部的にcollapseを使用しています。

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

以下のアコーディオンをクリックして、アコーディオンのコンテンツを展開/折りたたみます。

デフォルトで展開されているアコーディオンを表示するには

  • ` .accordion-collapse`要素に` .show`クラスを追加します。
  • ` .accordion-button`要素から` .collapsed`クラスを削除し、その` aria-expanded`属性を` true`に設定します。

これは最初の項目のアコーディオン本文です。Collapseプラグインが各要素のスタイル設定に使用される適切なクラスを追加するまで、デフォルトで表示されます。これらのクラスは、全体的な外観と、CSSトランジションによる表示と非表示を制御します。カスタムCSSやデフォルト変数のオーバーライドを使用して、これらを変更できます。また、ほぼすべてのHTMLを` .accordion-body`内に配置できますが、トランジションはオーバーフローを制限することに注意してください。

これは2番目の項目のアコーディオン本文です。Collapseプラグインが各要素のスタイル設定に使用される適切なクラスを追加するまで、デフォルトで非表示です。これらのクラスは、全体的な外観と、CSSトランジションによる表示と非表示を制御します。カスタムCSSやデフォルト変数のオーバーライドを使用して、これらを変更できます。また、ほぼすべてのHTMLを` .accordion-body`内に配置できますが、トランジションはオーバーフローを制限することに注意してください。

これは3番目の項目のアコーディオン本文です。Collapseプラグインが各要素のスタイル設定に使用される適切なクラスを追加するまで、デフォルトで非表示です。これらのクラスは、全体的な外観と、CSSトランジションによる表示と非表示を制御します。カスタムCSSやデフォルト変数のオーバーライドを使用して、これらを変更できます。また、ほぼすべてのHTMLを` .accordion-body`内に配置できますが、トランジションはオーバーフローを制限することに注意してください。
html
<div class="accordion" id="accordionExample">
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
        Accordion Item #1
      </button>
    </h2>
    <div id="collapseOne" class="accordion-collapse collapse show" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        <strong>This is the first item's accordion body.</strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
        Accordion Item #2
      </button>
    </h2>
    <div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        <strong>This is the second item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
        Accordion Item #3
      </button>
    </h2>
    <div id="collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        <strong>This is the third item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
      </div>
    </div>
  </div>
</div>

フラッシュ

いくつかのボーダーと角丸を削除して、アコーディオンを親コンテナとエッジトゥエッジでレンダリングするには、` .accordion-flush`を追加します。

` .accordion-flush`クラスを示すことを目的とした、このアコーディオンのプレースホルダーコンテンツ。これは最初の項目のアコーディオン本文です。

` .accordion-flush`クラスを示すことを目的とした、このアコーディオンのプレースホルダーコンテンツ。これは2番目の項目のアコーディオン本文です。実際のコンテンツで満たされていると想像してください。

` .accordion-flush`クラスを示すことを目的とした、このアコーディオンのプレースホルダーコンテンツ。これは3番目の項目のアコーディオン本文です。コンテンツに関してはこれ以上エキサイティングなことは起こっていませんが、現実世界のアプリケーションでどのように見えるかを少なくとも一見、より代表的に見せるためにスペースを埋めています。
html
<div class="accordion accordion-flush" id="accordionFlushExample">
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne">
        Accordion Item #1
      </button>
    </h2>
    <div id="flush-collapseOne" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample">
      <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the first item's accordion body.</div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseTwo" aria-expanded="false" aria-controls="flush-collapseTwo">
        Accordion Item #2
      </button>
    </h2>
    <div id="flush-collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample">
      <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the second item's accordion body. Let's imagine this being filled with some actual content.</div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseThree" aria-expanded="false" aria-controls="flush-collapseThree">
        Accordion Item #3
      </button>
    </h2>
    <div id="flush-collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample">
      <div class="accordion-body">Placeholder content for this accordion, which is intended to demonstrate the <code>.accordion-flush</code> class. This is the third item's accordion body. Nothing more exciting happening here in terms of content, but just filling up the space to make it look, at least at first glance, a bit more representative of how this would look in a real-world application.</div>
    </div>
  </div>
</div>

常に開く

各` .accordion-collapse`で` data-bs-parent`属性を省略すると、別の項目が開かれた場合でも、アコーディオン項目が開いたままになります。

これは最初の項目のアコーディオン本文です。Collapseプラグインが各要素のスタイル設定に使用される適切なクラスを追加するまで、デフォルトで表示されます。これらのクラスは、全体的な外観と、CSSトランジションによる表示と非表示を制御します。カスタムCSSやデフォルト変数のオーバーライドを使用して、これらを変更できます。また、ほぼすべてのHTMLを` .accordion-body`内に配置できますが、トランジションはオーバーフローを制限することに注意してください。

これは2番目の項目のアコーディオン本文です。Collapseプラグインが各要素のスタイル設定に使用される適切なクラスを追加するまで、デフォルトで非表示です。これらのクラスは、全体的な外観と、CSSトランジションによる表示と非表示を制御します。カスタムCSSやデフォルト変数のオーバーライドを使用して、これらを変更できます。また、ほぼすべてのHTMLを` .accordion-body`内に配置できますが、トランジションはオーバーフローを制限することに注意してください。

これは3番目の項目のアコーディオン本文です。Collapseプラグインが各要素のスタイル設定に使用される適切なクラスを追加するまで、デフォルトで非表示です。これらのクラスは、全体的な外観と、CSSトランジションによる表示と非表示を制御します。カスタムCSSやデフォルト変数のオーバーライドを使用して、これらを変更できます。また、ほぼすべてのHTMLを` .accordion-body`内に配置できますが、トランジションはオーバーフローを制限することに注意してください。
html
<div class="accordion" id="accordionPanelsStayOpenExample">
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true" aria-controls="panelsStayOpen-collapseOne">
        Accordion Item #1
      </button>
    </h2>
    <div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show">
      <div class="accordion-body">
        <strong>This is the first item's accordion body.</strong> It is shown by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false" aria-controls="panelsStayOpen-collapseTwo">
        Accordion Item #2
      </button>
    </h2>
    <div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse">
      <div class="accordion-body">
        <strong>This is the second item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseThree" aria-expanded="false" aria-controls="panelsStayOpen-collapseThree">
        Accordion Item #3
      </button>
    </h2>
    <div id="panelsStayOpen-collapseThree" class="accordion-collapse collapse">
      <div class="accordion-body">
        <strong>This is the third item's accordion body.</strong> It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <code>.accordion-body</code>, though the transition does limit overflow.
      </div>
    </div>
  </div>
</div>

アクセシビリティ

詳細については、collapseアクセシビリティセクションを参照してください。

CSS

変数

v5.2.0で追加

Bootstrapの進化するCSS変数アプローチの一環として、アコーディオンは、リアルタイムのカスタマイズを強化するために、` .accordion`でローカルCSS変数を使用するようになりました。CSS変数の値はSassを介して設定されるため、Sassのカスタマイズも引き続きサポートされます。

--#{$prefix}accordion-color: #{$accordion-color};
--#{$prefix}accordion-bg: #{$accordion-bg};
--#{$prefix}accordion-transition: #{$accordion-transition};
--#{$prefix}accordion-border-color: #{$accordion-border-color};
--#{$prefix}accordion-border-width: #{$accordion-border-width};
--#{$prefix}accordion-border-radius: #{$accordion-border-radius};
--#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
--#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
--#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
--#{$prefix}accordion-btn-color: #{$accordion-button-color};
--#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
--#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
--#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
--#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
--#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
--#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
--#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
--#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
--#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
--#{$prefix}accordion-active-color: #{$accordion-button-active-color};
--#{$prefix}accordion-active-bg: #{$accordion-button-active-bg};

Sass変数

$accordion-padding-y:                     1rem;
$accordion-padding-x:                     1.25rem;
$accordion-color:                         var(--#{$prefix}body-color);
$accordion-bg:                            var(--#{$prefix}body-bg);
$accordion-border-width:                  var(--#{$prefix}border-width);
$accordion-border-color:                  var(--#{$prefix}border-color);
$accordion-border-radius:                 var(--#{$prefix}border-radius);
$accordion-inner-border-radius:           subtract($accordion-border-radius, $accordion-border-width);

$accordion-body-padding-y:                $accordion-padding-y;
$accordion-body-padding-x:                $accordion-padding-x;

$accordion-button-padding-y:              $accordion-padding-y;
$accordion-button-padding-x:              $accordion-padding-x;
$accordion-button-color:                  var(--#{$prefix}body-color);
$accordion-button-bg:                     var(--#{$prefix}accordion-bg);
$accordion-transition:                    $btn-transition, border-radius .15s ease;
$accordion-button-active-bg:              var(--#{$prefix}primary-bg-subtle);
$accordion-button-active-color:           var(--#{$prefix}primary-text-emphasis);

// fusv-disable
$accordion-button-focus-border-color:     $input-focus-border-color; // Deprecated in v5.3.3
// fusv-enable
$accordion-button-focus-box-shadow:       $btn-focus-box-shadow;

$accordion-icon-width:                    1.25rem;
$accordion-icon-color:                    $body-color;
$accordion-icon-active-color:             $primary-text-emphasis;
$accordion-icon-transition:               transform .2s ease-in-out;
$accordion-icon-transform:                rotate(-180deg);

$accordion-button-icon:         url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>");
$accordion-button-active-icon:  url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='M2 5L8 11L14 5'/></svg>");