ドロップダウン
Bootstrap ドロップダウン プラグインを使用して、リンクなどのリストを表示するコンテキスト オーバーレイを切り替えます。
概要
ドロップダウンは、リンクのリストなどを表示するための切り替え可能なコンテキスト オーバーレイです。それらは、含まれている Bootstrap ドロップダウン JavaScript プラグインを使用してインタラクティブに作成されます。ホバリングではなく、クリックすることで切り替えられます。これは意図的な設計上の決定です。
ドロップダウンは、動的な配置とビューポートの検出を提供するサード パーティのライブラリであるPopperに基づいて構築されています。Bootstrap の JavaScript の前に必ずpopper.min.jsを含めるか、 Popper を含むbootstrap.bundle.min.js
/bootstrap.bundle.js
を使用してください。動的な配置は必要ないため、ナビゲーションバーにドロップダウンを配置するためにポッパーは使用されません。
アクセシビリティ
WAI ARIA標準は実際の widget を定義しますrole="menu"
が、これはアクションまたは機能をトリガーするアプリケーションのようなメニューに固有のものです。ARIAメニューには、メニュー項目、チェックボックス メニュー項目、ラジオ ボタン メニュー項目、ラジオ ボタン グループ、およびサブメニューのみを含めることができます。
一方、Bootstrap のドロップダウンは、汎用的で、さまざまな状況やマークアップ構造に適用できるように設計されています。たとえば、検索フィールドやログイン フォームなど、追加の入力やフォーム コントロールを含むドロップダウンを作成できます。このため、Bootstrap は、真のARIAメニューに必要なrole
およびaria-
属性のいずれも期待 (または自動的に追加) しません。作成者は、これらのより具体的な属性を自分で含める必要があります。
ただし、Bootstrap は.dropdown-item
、カーソル キーを使用して個々の要素間を移動し、ESCキーでメニューを閉じる機能など、ほとんどの標準的なキーボード メニュー操作の組み込みサポートを追加します。
例
ドロップダウンのトグル (ボタンまたはリンク) とドロップダウン メニューを.dropdown
、または を宣言する別の要素でラップしposition: relative;
ます。<a>
ドロップダウンは、または要素からトリガーし<button>
て、潜在的なニーズにより適合させることができます。ここに示す例では、必要に応じてセマンティック<ul>
要素を使用していますが、カスタム マークアップがサポートされています。
シングルボタン
いくつかのマークアップを変更して、任意の単一.btn
をドロップダウン トグルに変えることができます。<button>
どちらの要素でも動作させる方法は次のとおりです。
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
そして<a>
要素で:
<div class="dropdown">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown link
</a>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
最良の部分は、ボタンのバリアントでもこれを実行できることです。
<!-- Example single danger button -->
<div class="btn-group">
<button type="button" class="btn btn-danger dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Action
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
分割ボタン
同様に、単一ボタン ドロップダウンと実質的に同じマークアップを使用して分割ボタン ドロップダウンを作成しますが.dropdown-toggle-split
、ドロップダウン キャレットの周囲に適切なスペースを追加します。
この追加のクラスを使用してpadding
、キャレットの両側の水平方向を 25%縮小し、margin-left
通常のボタン ドロップダウンに追加された を削除します。これらの追加の変更により、キャレットが分割ボタンの中央に配置され、メイン ボタンの横により適切なサイズのヒット領域が提供されます。
<!-- Example split danger button -->
<div class="btn-group">
<button type="button" class="btn btn-danger">Action</button>
<button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
サイジング
ボタン ドロップダウンは、デフォルトのドロップダウン ボタンやスプリット ドロップダウン ボタンなど、あらゆるサイズのボタンで機能します。
<!-- Large button groups (default and split) -->
<div class="btn-group">
<button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Large button
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-lg" type="button">
Large split button
</button>
<button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Small button
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-sm" type="button">
Small split button
</button>
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
ダーク ドロップダウン
既存.dropdown-menu-dark
の.dropdown-menu
. ドロップダウン項目を変更する必要はありません。
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton2" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="dropdownMenuButton2">
<li><a class="dropdown-item active" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
そしてそれをnavbarで使用するために:
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDarkDropdown" aria-controls="navbarNavDarkDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
方向
RTL
RTL で Bootstrap を使用すると、方向がミラーリングされ.dropstart
ます。つまり、右側に表示されます。
ドロップアップ
.dropup
親要素に追加して、要素の上のドロップダウン メニューをトリガーします。
<!-- Default dropup button -->
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropup
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
<!-- Split dropup button -->
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary">
Split dropup
</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
ドロップライト
.dropend
親要素に追加して、要素の右側にあるドロップダウン メニューをトリガーします。
<!-- Default dropend button -->
<div class="btn-group dropend">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropright
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
<!-- Split dropend button -->
<div class="btn-group dropend">
<button type="button" class="btn btn-secondary">
Split dropend
</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropright</span>
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
ドロップレフト
.dropstart
親要素に追加して、要素の左側にあるドロップダウン メニューをトリガーします。
<!-- Default dropstart button -->
<div class="btn-group dropstart">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropstart
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
<!-- Split dropstart button -->
<div class="btn-group">
<div class="btn-group dropstart" role="group">
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropstart</span>
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
<button type="button" class="btn btn-secondary">
Split dropstart
</button>
</div>
メニュー項目
<a>
または<button>
要素をドロップダウン項目として使用できます。
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu2">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
を使用して非インタラクティブなドロップダウン アイテムを作成することもできます.dropdown-item-text
。カスタム CSS またはテキスト ユーティリティを使用して、自由にスタイルを設定してください。
<ul class="dropdown-menu">
<li><span class="dropdown-item-text">Dropdown item text</span></li>
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
アクティブ
.active
ドロップダウンのアイテムに追加して、それらをアクティブとしてスタイルします。アクティブな状態を支援技術に伝えるには、aria-current
属性を使用します —page
現在のページまたはtrue
セット内の現在のアイテムの値を使用します。
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Regular link</a></li>
<li><a class="dropdown-item active" href="#" aria-current="true">Active link</a></li>
<li><a class="dropdown-item" href="#">Another link</a></li>
</ul>
無効
.disabled
ドロップダウンの項目に追加して、それらを disabled としてスタイルします。
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Regular link</a></li>
<li><a class="dropdown-item disabled" href="#" tabindex="-1" aria-disabled="true">Disabled link</a></li>
<li><a class="dropdown-item" href="#">Another link</a></li>
</ul>
メニューの配置
デフォルトでは、ドロップダウン メニューは親の左側に沿って上から 100% の位置に自動的に配置されます。これは方向.drop*
クラスで変更できますが、追加の修飾子クラスで制御することもできます。
ドロップダウン メニューを右揃え.dropdown-menu-end
にするには、aに追加します。.dropdown-menu
RTL で Bootstrap を使用すると、方向がミラーリングされ.dropdown-menu-end
ます。つまり、左側に表示されます。
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Right-aligned menu example
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
レスポンシブ アライメント
レスポンシブ アライメントを使用する場合は、属性を追加して動的配置を無効にしdata-bs-display="static"
、レスポンシブ バリエーション クラスを使用します。
ドロップダウン メニューを特定のブレークポイント以上に揃えるには、 を追加します.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end
。
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Left-aligned but right aligned when large screen
</button>
<ul class="dropdown-menu dropdown-menu-lg-end">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
ドロップダウン メニューを特定のブレークポイント以上で左揃えにするには、 と を追加.dropdown-menu-end
し.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start
ます。
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Right-aligned but left aligned when large screen
</button>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
data-bs-display="static"
Popper はナビゲーション バーでは使用されないため、ナビゲーション バーのドロップダウン ボタンに属性を追加する必要がないことに注意してください。
配置オプション
上記のほとんどのオプションを使用して、さまざまなドロップダウン配置オプションを 1 か所にまとめたキッチン シンクの小さなデモを次に示します。
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Right-aligned menu
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Left-aligned, right-aligned lg
</button>
<ul class="dropdown-menu dropdown-menu-lg-end">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Right-aligned, left-aligned lg
</button>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group dropstart">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropstart
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group dropend">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropend
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropup
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
メニュー内容
ヘッダー
ヘッダーを追加して、ドロップダウン メニューのアクションのセクションにラベルを付けます。
<ul class="dropdown-menu">
<li><h6 class="dropdown-header">Dropdown header</h6></li>
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
</ul>
仕切り
関連するメニュー項目のグループを仕切りで分けます。
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
文章
テキスト付きのドロップダウン メニュー内に自由形式のテキストを配置し、スペーシング ユーティリティを使用します。メニューの幅を制限するには、追加のサイズ変更スタイルが必要になる可能性があることに注意してください。
<div class="dropdown-menu p-4 text-muted" style="max-width: 200px;">
<p>
Some example text that's free-flowing within the dropdown menu.
</p>
<p class="mb-0">
And this is more example text.
</p>
</div>
フォーム
ドロップダウン メニュー内にフォームを配置するか、フォームをドロップダウン メニューにして、マージンまたはパディング ユーティリティを使用して、必要な負のスペースをフォームに与えます。
<div class="dropdown-menu">
<form class="px-4 py-3">
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="[email protected]">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
</div>
<div class="mb-3">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck">
<label class="form-check-label" for="dropdownCheck">
Remember me
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">New around here? Sign up</a>
<a class="dropdown-item" href="#">Forgot password?</a>
</div>
<form class="dropdown-menu p-4">
<div class="mb-3">
<label for="exampleDropdownFormEmail2" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="[email protected]">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword2" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password">
</div>
<div class="mb-3">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck2">
<label class="form-check-label" for="dropdownCheck2">
Remember me
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
ドロップダウン オプション
data-bs-offset
またはを使用data-bs-reference
して、ドロップダウンの場所を変更します。
<div class="d-flex">
<div class="dropdown me-1">
<button type="button" class="btn btn-secondary dropdown-toggle" id="dropdownMenuOffset" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20">
Offset
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuOffset">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary">Reference</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" id="dropdownMenuReference" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuReference">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
</div>
オートクローズ動作
デフォルトでは、ドロップダウン メニューの内側または外側をクリックすると、ドロップダウン メニューが閉じます。オプションを使用してautoClose
、ドロップダウンのこの動作を変更できます。
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="defaultDropdown" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false">
Default dropdown
</button>
<ul class="dropdown-menu" aria-labelledby="defaultDropdown">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuClickableOutside" data-bs-toggle="dropdown" data-bs-auto-close="inside" aria-expanded="false">
Clickable outside
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuClickableOutside">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuClickableInside" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
Clickable inside
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuClickableInside">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuClickable" data-bs-toggle="dropdown" data-bs-auto-close="false" aria-expanded="false">
Manual close
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuClickable">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
サス
変数
すべてのドロップダウンの変数:
$dropdown-min-width: 10rem;
$dropdown-padding-x: 0;
$dropdown-padding-y: .5rem;
$dropdown-spacer: .125rem;
$dropdown-font-size: $font-size-base;
$dropdown-color: $body-color;
$dropdown-bg: $white;
$dropdown-border-color: rgba($black, .15);
$dropdown-border-radius: $border-radius;
$dropdown-border-width: $border-width;
$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width);
$dropdown-divider-bg: $dropdown-border-color;
$dropdown-divider-margin-y: $spacer * .5;
$dropdown-box-shadow: $box-shadow;
$dropdown-link-color: $gray-900;
$dropdown-link-hover-color: shade-color($gray-900, 10%);
$dropdown-link-hover-bg: $gray-200;
$dropdown-link-active-color: $component-active-color;
$dropdown-link-active-bg: $component-active-bg;
$dropdown-link-disabled-color: $gray-500;
$dropdown-item-padding-y: $spacer * .25;
$dropdown-item-padding-x: $spacer;
$dropdown-header-color: $gray-600;
$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x;
ダーク ドロップダウンの変数:
$dropdown-dark-color: $gray-300;
$dropdown-dark-bg: $gray-800;
$dropdown-dark-border-color: $dropdown-border-color;
$dropdown-dark-divider-bg: $dropdown-divider-bg;
$dropdown-dark-box-shadow: null;
$dropdown-dark-link-color: $dropdown-dark-color;
$dropdown-dark-link-hover-color: $white;
$dropdown-dark-link-hover-bg: rgba($white, .15);
$dropdown-dark-link-active-color: $dropdown-link-active-color;
$dropdown-dark-link-active-bg: $dropdown-link-active-bg;
$dropdown-dark-link-disabled-color: $gray-500;
$dropdown-dark-header-color: $gray-500;
ドロップダウンのインタラクティブ性を示す CSS ベースのキャレットの変数:
$caret-width: .3em;
$caret-vertical-align: $caret-width * .85;
$caret-spacing: $caret-width * .85;
ミックスイン
ミックスインは、CSS ベースのキャレットを生成するために使用され、scss/mixins/_caret.scss
.
@mixin caret-down {
border-top: $caret-width solid;
border-right: $caret-width solid transparent;
border-bottom: 0;
border-left: $caret-width solid transparent;
}
@mixin caret-up {
border-top: 0;
border-right: $caret-width solid transparent;
border-bottom: $caret-width solid;
border-left: $caret-width solid transparent;
}
@mixin caret-end {
border-top: $caret-width solid transparent;
border-right: 0;
border-bottom: $caret-width solid transparent;
border-left: $caret-width solid;
}
@mixin caret-start {
border-top: $caret-width solid transparent;
border-right: $caret-width solid;
border-bottom: $caret-width solid transparent;
}
@mixin caret($direction: down) {
@if $enable-caret {
&::after {
display: inline-block;
margin-left: $caret-spacing;
vertical-align: $caret-vertical-align;
content: "";
@if $direction == down {
@include caret-down();
} @else if $direction == up {
@include caret-up();
} @else if $direction == end {
@include caret-end();
}
}
@if $direction == start {
&::after {
display: none;
}
&::before {
display: inline-block;
margin-right: $caret-spacing;
vertical-align: $caret-vertical-align;
content: "";
@include caret-start();
}
}
&:empty::after {
margin-left: 0;
}
}
}
使用法
ドロップダウン プラグインは、データ属性または JavaScript を介し.show
て、親のクラスを切り替えることにより、非表示のコンテンツ (ドロップダウン メニュー) を切り替えます.dropdown-menu
。このdata-bs-toggle="dropdown"
属性は、アプリケーション レベルでドロップダウン メニューを閉じるために使用されるため、常に使用することをお勧めします。
mouseover
と、要素の直接の子に空のハンドラーが
追加されます<body>
。この確かに醜いハックは
、iOS のイベント デリゲーションの癖を回避するために必要です。そうしないと、ドロップダウンの外側のどこかをタップしても、ドロップダウンを閉じるコードがトリガーされなくなります。ドロップダウンが閉じられると、これらの追加の空の
mouseover
ハンドラーは削除されます。
データ属性経由
data-bs-toggle="dropdown"
リンクまたはボタンに追加して、ドロップダウンを切り替えます。
<div class="dropdown">
<button id="dLabel" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown trigger
</button>
<ul class="dropdown-menu" aria-labelledby="dLabel">
...
</ul>
</div>
JavaScript 経由
JavaScript を介してドロップダウンを呼び出します。
var dropdownElementList = [].slice.call(document.querySelectorAll('.dropdown-toggle'))
var dropdownList = dropdownElementList.map(function (dropdownToggleEl) {
return new bootstrap.Dropdown(dropdownToggleEl)
})
data-bs-toggle="dropdown"
まだ必要
JavaScript を介してドロップダウンを呼び出すか、代わりに data-api を使用するかに関係なく、data-bs-toggle="dropdown"
常にドロップダウンのトリガー要素に存在する必要があります。
オプション
オプションは、データ属性または JavaScript を介して渡すことができます。data-bs-
データ属性の場合、オプション名をのようにに追加しますdata-bs-offset=""
。データ属性を介してオプションを渡すときは、オプション名のケース タイプを camelCase から kebab-case に変更してください。たとえば、 を使用する代わりに、 をdata-bs-autoClose="false"
使用しますdata-bs-auto-close="false"
。
名前 | タイプ | デフォルト | 説明 |
---|---|---|---|
boundary |
文字列 | エレメント | 'clippingParents' |
ドロップダウン メニューのオーバーフロー制約境界 (Popper の preventOverflow 修飾子にのみ適用されます)。デフォルトで'clippingParents' は、HTMLElement 参照を受け入れることができます (JavaScript 経由のみ)。詳細については、Popper のdetectOverflow docsを参照してください。 |
reference |
文字列 | 要素 | 物体 | 'toggle' |
ドロップダウン メニューの参照要素。'toggle' 、HTMLElement 参照、'parent' または を提供するオブジェクトの値を受け入れますgetBoundingClientRect 。詳細については、Popper のコンストラクタ ドキュメントと仮想要素ドキュメントを参照してください。 |
display |
ストリング | 'dynamic' |
デフォルトでは、動的ポジショニングに Popper を使用します。でこれを無効にしstatic ます。 |
offset |
配列 | 文字列 | 関数 | [0, 2] |
ターゲットに対するドロップダウンのオフセット。次のようなカンマ区切りの値を使用して、データ属性に文字列を渡すことができます。 オフセットを決定するために関数が使用される場合、その関数は、最初の引数としてポッパーの配置、参照、およびポッパーの四角形を含むオブジェクトで呼び出されます。トリガー要素の DOM ノードは、2 番目の引数として渡されます。この関数は、2 つの数値を含む配列を返さなければなりません: . 詳細については、Popper のオフセット ドキュメントを参照してください。 |
autoClose |
ブール値 | ストリング | true |
ドロップダウンの自動終了動作を構成します。
|
popperConfig |
null | null | オブジェクト | 関数 | null |
Bootstrap のデフォルトの Popper 設定を変更するには、Popper の設定を参照してください。 関数を使用して Popper 構成を作成する場合、Bootstrap のデフォルトの Popper 構成を含むオブジェクトで呼び出されます。デフォルトを使用して独自の構成にマージするのに役立ちます。この関数は、Popper の構成オブジェクトを返さなければなりません。 |
関数の使用popperConfig
var dropdown = new bootstrap.Dropdown(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
メソッド
方法 | 説明 |
---|---|
toggle |
特定のナビゲーション バーまたはタブ付きナビゲーションのドロップダウン メニューを切り替えます。 |
show |
特定のナビゲーション バーまたはタブ付きナビゲーションのドロップダウン メニューを表示します。 |
hide |
特定のナビゲーション バーまたはタブ付きナビゲーションのドロップダウン メニューを非表示にします。 |
update |
要素のドロップダウンの位置を更新します。 |
dispose |
要素のドロップダウンを破棄します。(DOM要素に格納されたデータを削除します) |
getInstance |
DOM 要素に関連付けられたドロップダウン インスタンスを取得できる静的メソッドです。次のように使用できます。bootstrap.Dropdown.getInstance(element) |
getOrCreateInstance |
DOM 要素に関連付けられたドロップダウン インスタンスを返すか、初期化されていない場合に新しいインスタンスを作成する静的メソッド。次のように使用できます。bootstrap.Dropdown.getOrCreateInstance(element) |
イベント
すべてのドロップダウン イベントは、トグル要素で発生し、バブルアップします。.dropdown-menu
したがって、の親要素にイベント リスナーを追加することもできます。イベントhide.bs.dropdown
には、クリック イベントのイベント オブジェクトを含むプロパティがあります (元のイベント タイプが の場合のみ)。hidden.bs.dropdown
clickEvent
click
方法 | 説明 |
---|---|
show.bs.dropdown |
show instance メソッドが呼び出されるとすぐに起動します。 |
shown.bs.dropdown |
ドロップダウンがユーザーに表示され、CSS トランジションが完了したときに発生します。 |
hide.bs.dropdown |
hide インスタンス メソッドが呼び出されるとすぐに発生します。 |
hidden.bs.dropdown |
ドロップダウンがユーザーから非表示になり、CSS トランジションが完了したときに発生します。 |
var myDropdown = document.getElementById('myDropdown')
myDropdown.addEventListener('show.bs.dropdown', function () {
// do something...
})