Overview
Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They’re made
interactive with the included Bootstrap dropdown JavaScript plugin. They’re toggled by clicking, not
by hovering; this is
an intentional design decision .
Dropdowns are built on a third party library, Popper ,
which provides dynamic positioning and viewport detection. Be sure to include
popper.min.js
before Bootstrap’s JavaScript or use bootstrap.bundle.min.js /
bootstrap.bundle.js which contains Popper. Popper isn’t used to position dropdowns in
navbars though as dynamic positioning isn’t required.
Accessibility
The
WAI
ARIA
standard defines an actual
role="menu" widget , but this
is specific to application-like menus which trigger actions or functions.
ARIA menus can only contain menu items,
checkbox menu items, radio button menu items, radio button groups, and sub-menus.
Bootstrap’s dropdowns, on the other hand, are designed to be generic and applicable to a variety of
situations and markup structures. For instance, it is possible to create dropdowns that contain
additional inputs and form controls, such as search fields or login forms. For this reason, Bootstrap
does not expect (nor automatically add) any of the role and aria- attributes
required for true ARIA menus. Authors will
have to include these more specific attributes themselves.
However, Bootstrap does add built-in support for most standard keyboard menu interactions, such as the
ability to move through individual .dropdown-item elements using the cursor keys and
close the menu with the Esc key.
Examples
Wrap the dropdown’s toggle (your button or link) and the dropdown menu within .dropdown,
or another element that declares position: relative;. Ideally, you should use a
<button> element as the dropdown trigger, but the plugin will work with
<a> elements as well. The examples shown here use semantic
<ul> elements where appropriate, but custom markup is supported.
Any single .btn can be turned into a dropdown toggle with some markup changes. Here’s how
you can put them to work with <button> elements:
<div class="dropdown">
<button class="btn btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu">
<li><h6 class="dropdown-header">My Account</h6></li>
<li><a class="dropdown-item d-flex justify-content-between align-items-center" href="#"><span>Profile</span><kbd class="ms-3" aria-hidden="true">⇧⌘P</kbd></a></li>
<li><a class="dropdown-item d-flex justify-content-between align-items-center" href="#"><span>Billing</span><kbd class="ms-3" aria-hidden="true">⌘B</kbd></a></li>
<li><a class="dropdown-item d-flex justify-content-between align-items-center" href="#"><span>Settings</span><kbd class="ms-3" aria-hidden="true">⌘S</kbd></a></li>
<li><a class="dropdown-item d-flex justify-content-between align-items-center" href="#"><span>Keyboard Shortcuts</span><kbd class="ms-3" aria-hidden="true">⌘K</kbd></a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Team</a></li>
<li class="dropend dropdown-submenu">
<a class="dropdown-item dropdown-toggle" data-bs-toggle="dropdown" role="button" tabindex="0" aria-expanded="false">Invite Users</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Email</a></li>
<li><a class="dropdown-item" href="#">Message</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">More</a></li>
</ul>
</li>
<li><a class="dropdown-item d-flex justify-content-between align-items-center" href="#"><span>New Team</span><kbd class="ms-3" aria-hidden="true">⌘+T</kbd></a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">GitHub</a></li>
<li><a class="dropdown-item" href="#">Support</a></li>
<li><a class="dropdown-item disabled" href="#" tabindex="-1" aria-disabled="true">API</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item d-flex justify-content-between align-items-center" href="#"><span>Log out</span><kbd class="ms-3" aria-hidden="true">⇧⌘Q</kbd></a></li>
</ul>
</div>
<div class="dropdown"> <button class="btn btn-outline-secondary
dropdown-toggle" type="button" data-bs-toggle="dropdown"
aria-expanded="false"> Dropdown button </button> <ul
class="dropdown-menu"> <li><h6 class="dropdown-header">My
Account</h6></li> <li><a class="dropdown-item d-flex
justify-content-between align-items-center"
href="#"><span>Profile</span><kbd class="ms-3"
aria-hidden="true">⇧⌘P</kbd></a></li> <li><a
class="dropdown-item d-flex justify-content-between align-items-center"
href="#"><span>Billing</span><kbd class="ms-3"
aria-hidden="true">⌘B</kbd></a></li> <li><a
class="dropdown-item d-flex justify-content-between align-items-center"
href="#"><span>Settings</span><kbd class="ms-3"
aria-hidden="true">⌘S</kbd></a></li> <li><a
class="dropdown-item d-flex justify-content-between align-items-center"
href="#"><span>Keyboard Shortcuts</span><kbd class="ms-3"
aria-hidden="true">⌘K</kbd></a></li> <li><hr
class="dropdown-divider"></li> <li><a
class="dropdown-item" href="#">Team</a></li> <li
class="dropend dropdown-submenu"> <a class="dropdown-item
dropdown-toggle" data-bs-toggle="dropdown" role="button"
tabindex="0" aria-expanded="false">Invite Users</a> <ul
class="dropdown-menu"> <li><a class="dropdown-item"
href="#">Email</a></li> <li><a class="dropdown-item"
href="#">Message</a></li> <li><hr
class="dropdown-divider"></li> <li><a
class="dropdown-item" href="#">More</a></li> </ul>
</li> <li><a class="dropdown-item d-flex justify-content-between
align-items-center" href="#"><span>New Team</span><kbd
class="ms-3" aria-hidden="true">⌘+T</kbd></a></li>
<li><hr class="dropdown-divider"></li> <li><a
class="dropdown-item" href="#">GitHub</a></li>
<li><a class="dropdown-item"
href="#">Support</a></li> <li><a class="dropdown-item
disabled" href="#" tabindex="-1"
aria-disabled="true">API</a></li> <li><hr
class="dropdown-divider"></li> <li><a class="dropdown-item
d-flex justify-content-between align-items-center" href="#"><span>Log
out</span><kbd class="ms-3"
aria-hidden="true">⇧⌘Q</kbd></a></li> </ul> </div>
While <button> is the recommended control for a dropdown toggle, there might be
situations where you have to use an <a> element. If you do, we recommend adding a
role="button" attribute to appropriately convey control’s purpose to assistive
technologies such as screen readers.
<div class="dropdown">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown link
</a>
<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>
</ul>
</div>
<div class="dropdown"> <a class="btn btn-secondary dropdown-toggle"
href="#" role="button" data-bs-toggle="dropdown"
aria-expanded="false"> Dropdown link </a> <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> </ul> </div>
The best part is you can do this with any button variant, too:
Primary
Secondary
Success
Info
Warning
Danger
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Primary</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>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Secondary</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>
<div class="btn-group">
<button type="button" class="btn btn-success dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Success</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>
<div class="btn-group">
<button type="button" class="btn btn-info dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Info</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>
<div class="btn-group">
<button type="button" class="btn btn-warning dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Warning</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>
<div class="btn-group">
<button type="button" class="btn btn-danger dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Danger</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>
<div class="btn-group"> <button type="button" class="btn
btn-primary dropdown-toggle" data-bs-toggle="dropdown"
aria-expanded="false">Primary</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> <div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle"
data-bs-toggle="dropdown" aria-expanded="false">Secondary</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> <div class="btn-group">
<button type="button" class="btn btn-success dropdown-toggle"
data-bs-toggle="dropdown" aria-expanded="false">Success</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> <div class="btn-group">
<button type="button" class="btn btn-info dropdown-toggle"
data-bs-toggle="dropdown" aria-expanded="false">Info</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> <div class="btn-group">
<button type="button" class="btn btn-warning dropdown-toggle"
data-bs-toggle="dropdown" aria-expanded="false">Warning</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> <div class="btn-group">
<button type="button" class="btn btn-danger dropdown-toggle"
data-bs-toggle="dropdown" aria-expanded="false">Danger</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>
< div class = " btn-group" >
< button type = " button" class = " btn btn-danger dropdown-toggle" data-bs-toggle = " dropdown" aria-expanded = " false" >
Danger
</ 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>
Similarly, create split button dropdowns with virtually the same markup as single button dropdowns,
but with the addition of .dropdown-toggle-split for proper spacing around the dropdown
caret.
We use this extra class to reduce the horizontal padding on either side of the caret by
25% and remove the margin-left that’s added for regular button dropdowns. Those extra
changes keep the caret centered in the split button and provide a more appropriately sized hit area
next to the main button.
Primary
Toggle Dropdown
Secondary
Toggle Dropdown
Success
Toggle Dropdown
Info
Toggle Dropdown
Warning
Toggle Dropdown
Danger
Toggle Dropdown
<div class="btn-group">
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-primary 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>
<div class="btn-group">
<button type="button" class="btn btn-secondary">Secondary</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">
<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 class="btn-group">
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-success 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>
<div class="btn-group">
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-info 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>
<div class="btn-group">
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-warning 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>
<div class="btn-group">
<button type="button" class="btn btn-danger">Danger</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>
<div class="btn-group"> <button type="button" class="btn
btn-primary">Primary</button> <button type="button" class="btn
btn-primary 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> <div class="btn-group"> <button
type="button" class="btn btn-secondary">Secondary</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"> <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 class="btn-group"> <button
type="button" class="btn btn-success">Success</button> <button
type="button" class="btn btn-success 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> <div class="btn-group">
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-info 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> <div class="btn-group"> <button
type="button" class="btn btn-warning">Warning</button> <button
type="button" class="btn btn-warning 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> <div class="btn-group">
<button type="button" class="btn btn-danger">Danger</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>
< div class = " btn-group" >
< button type = " button" class = " btn btn-danger" > Danger</ 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>
Sizing
Button dropdowns work with buttons of all sizes, including default and split dropdown buttons.
Large button
Large split button
Toggle Dropdown
<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">
<li><a class="dropdown-item dropdown-item-lg" href="#">Action</a></li>
<li><a class="dropdown-item dropdown-item-lg" href="#">Another action</a></li>
<li><a class="dropdown-item dropdown-item-lg" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item dropdown-item-lg" href="#">Separated link</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-lg btn-secondary">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">
<li><a class="dropdown-item dropdown-item-lg" href="#">Action</a></li>
<li><a class="dropdown-item dropdown-item-lg" href="#">Another action</a></li>
<li><a class="dropdown-item dropdown-item-lg" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item dropdown-item-lg" href="#">Separated link</a></li>
</ul>
</div>
<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"> <li><a class="dropdown-item
dropdown-item-lg" href="#">Action</a></li> <li><a
class="dropdown-item dropdown-item-lg" href="#">Another
action</a></li> <li><a class="dropdown-item dropdown-item-lg"
href="#">Something else here</a></li> <li><hr
class="dropdown-divider"></li> <li><a class="dropdown-item
dropdown-item-lg" href="#">Separated link</a></li> </ul>
</div> <div class="btn-group"> <button type="button"
class="btn btn-lg btn-secondary">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"> <li><a
class="dropdown-item dropdown-item-lg"
href="#">Action</a></li> <li><a class="dropdown-item
dropdown-item-lg" href="#">Another action</a></li> <li><a
class="dropdown-item dropdown-item-lg" href="#">Something else
here</a></li> <li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item dropdown-item-lg" href="#">Separated
link</a></li> </ul> </div>
< 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>
Small button
Small split button
Toggle Dropdown
<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">
<li><a class="dropdown-item dropdown-item-sm" href="#">Action</a></li>
<li><a class="dropdown-item dropdown-item-sm" href="#">Another action</a></li>
<li><a class="dropdown-item dropdown-item-sm" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item dropdown-item-sm" href="#">Separated link</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-sm btn-secondary">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">
<li><a class="dropdown-item dropdown-item-sm" href="#">Action</a></li>
<li><a class="dropdown-item dropdown-item-sm" href="#">Another action</a></li>
<li><a class="dropdown-item dropdown-item-sm" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item dropdown-item-sm" href="#">Separated link</a></li>
</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"> <li><a class="dropdown-item
dropdown-item-sm" href="#">Action</a></li> <li><a
class="dropdown-item dropdown-item-sm" href="#">Another
action</a></li> <li><a class="dropdown-item dropdown-item-sm"
href="#">Something else here</a></li> <li><hr
class="dropdown-divider"></li> <li><a class="dropdown-item
dropdown-item-sm" href="#">Separated link</a></li> </ul>
</div> <div class="btn-group"> <button type="button"
class="btn btn-sm btn-secondary">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"> <li><a
class="dropdown-item dropdown-item-sm"
href="#">Action</a></li> <li><a class="dropdown-item
dropdown-item-sm" href="#">Another action</a></li> <li><a
class="dropdown-item dropdown-item-sm" href="#">Something else
here</a></li> <li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item dropdown-item-sm" href="#">Separated
link</a></li> </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>
Dark dropdowns
Opt into darker dropdowns to match a dark navbar or custom style by adding
.dropdown-menu-dark onto an existing .dropdown-menu. No changes are required
to the dropdown items.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu dropdown-menu-dark">
<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>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" data-bs-toggle="dropdown"
aria-expanded="false"> Dropdown button </button> <ul
class="dropdown-menu dropdown-menu-dark"> <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>
And putting it to use in a 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">
<button class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</button>
<ul class="dropdown-menu dropdown-menu-dark">
<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>
<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"> <button
class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown"
aria-expanded="false"> Dropdown </button> <ul class="dropdown-menu
dropdown-menu-dark"> <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>
Directions
Directions are flipped in RTL mode. As such, .dropstart will appear on
the right side.
Centered
Make the dropdown menu centered below the toggle with .dropdown-center on the parent
element.
<div class="dropdown-center">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Centered dropdown
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Action two</a></li>
<li><a class="dropdown-item" href="#">Action three</a></li>
</ul>
</div>
<div class="dropdown-center"> <button class="btn btn-secondary
dropdown-toggle" type="button" data-bs-toggle="dropdown"
aria-expanded="false"> Centered dropdown </button> <ul
class="dropdown-menu"> <li><a class="dropdown-item"
href="#">Action</a></li> <li><a
class="dropdown-item" href="#">Action two</a></li>
<li><a class="dropdown-item" href="#">Action
three</a></li> </ul> </div>
Dropup
Trigger dropdown menus above elements by adding .dropup to the parent element.
Dropup
Split dropup
Toggle Dropdown
<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="#">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 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">
<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 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="#">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 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"> <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 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" >
</ ul>
</ div>
< 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" >
</ ul>
</ div>
Dropup centered
Make the dropup menu centered above the toggle with .dropup-center on the parent element.
<div class="dropup-center dropup">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Centered dropup
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Action two</a></li>
<li><a class="dropdown-item" href="#">Action three</a></li>
</ul>
</div>
<div class="dropup-center dropup"> <button class="btn btn-secondary
dropdown-toggle" type="button" data-bs-toggle="dropdown"
aria-expanded="false"> Centered dropup </button> <ul
class="dropdown-menu"> <li><a class="dropdown-item"
href="#">Action</a></li> <li><a
class="dropdown-item" href="#">Action two</a></li>
<li><a class="dropdown-item" href="#">Action
three</a></li> </ul> </div>
Dropend
Trigger dropdown menus at the right of the elements by adding .dropend to the parent
element.
Dropend
Split dropend
Toggle Dropend
<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="#">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 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 Dropend</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>
<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="#">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 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 Dropend</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>
< 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" >
</ ul>
</ div>
< 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 Dropend</ span>
</ button>
< ul class = " dropdown-menu" >
</ ul>
</ div>
Dropstart
Trigger dropdown menus at the left of the elements by adding .dropstart to the parent
element.
Dropstart
Toggle Dropstart
Split dropstart
<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="#">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 class="btn-group dropstart">
<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">
<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>
<button type="button" class="btn btn-secondary">Split dropstart</button>
</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="#">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 class="btn-group
dropstart"> <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">
<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> <button type="button" class="btn
btn-secondary">Split dropstart</button> </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" >
</ ul>
</ div>
< div class = " btn-group dropstart" >
< 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" >
</ ul>
< button type = " button" class = " btn btn-secondary" > Split dropstart</ button>
</ div>
You can use <a> or <button> elements as dropdown items.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</button>
<ul class="dropdown-menu">
<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>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" data-bs-toggle="dropdown"
aria-expanded="false"> Dropdown </button> <ul
class="dropdown-menu"> <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>
You can also create non-interactive dropdown items with .dropdown-item-text. Feel free to
style further with custom CSS or text utilities.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<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>
</div>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" id="dropdownMenuButton"
data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button
</button> <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> </div>
Active
Add .active to items in the dropdown to style them as active . To convey
the active state to assistive technologies, use the aria-current attribute — using the
page value for the current page, or true for the current item in a set.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<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>
</div>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" id="dropdownMenuButton"
data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button
</button> <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> </div>
Disabled
Add .disabled to items in the dropdown to style them as disabled .
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Regular link</a></li>
<li><a class="dropdown-item disabled" aria-disabled="true">Disabled link</a></li>
<li><a class="dropdown-item" href="#">Another link</a></li>
</ul>
</div>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" id="dropdownMenuButton"
data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button
</button> <ul class="dropdown-menu"> <li><a
class="dropdown-item" href="#">Regular link</a></li>
<li><a class="dropdown-item disabled"
aria-disabled="true">Disabled link</a></li> <li><a
class="dropdown-item" href="#">Another link</a></li>
</ul> </div>
By default, a dropdown menu is automatically positioned 100% from the top and along the left side of
its parent. You can change this with the directional .drop* classes, but you can also
control them with additional modifier classes.
Add .dropdown-menu-end to a .dropdown-menu to right align the dropdown menu.
Directions are mirrored when using Bootstrap in RTL, meaning .dropdown-menu-end will
appear on the left side.
Heads up! Dropdowns are positioned thanks to Popper except when they are contained
in a navbar.
Right-aligned menu example
<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>
<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>
Responsive alignment
If you want to use responsive alignment, disable dynamic positioning by adding the
data-bs-display="static" attribute and use the responsive variation classes.
To align right the dropdown menu with the given breakpoint or larger, add
.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end.
Left-aligned but right aligned when large screen
<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>
<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>
To align left the dropdown menu with the given breakpoint or larger, add
.dropdown-menu-end and .dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start.
Right-aligned but left aligned when large screen
<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>
<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>
Note that you don’t need to add a data-bs-display="static" attribute to
dropdown buttons in navbars, since Popper isn’t used in navbars.
Alignment options
Taking most of the options shown above, here’s a small kitchen sink demo of various dropdown alignment
options in one place.
Dropdown
Right-aligned menu
Left-aligned, right-aligned lg
Right-aligned, left-aligned lg
Dropstart
Dropend
Dropup
<div class="btn-group mb-1">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</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 mb-1">
<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 mb-1">
<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 mb-1">
<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 mb-1">
<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 mb-1">
<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 mb-1">
<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>
<div class="btn-group mb-1"> <button class="btn btn-secondary
dropdown-toggle" type="button" data-bs-toggle="dropdown"
aria-expanded="false"> Dropdown </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 mb-1">
<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 mb-1">
<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 mb-1">
<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
mb-1"> <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
mb-1"> <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
mb-1"> <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>
Add a header to label sections of actions in any dropdown menu.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<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>
</div>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" id="dropdownMenuButton"
data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button
</button> <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> </div>
Dividers
Separate groups of related menu items with a divider.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</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>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" id="dropdownMenuButton"
data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button
</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>
Text
Place any freeform text within a dropdown menu with text and use
spacing utilities . Note that you’ll likely need additional sizing
styles to constrain the menu width.
Some example text that’s free-flowing within the dropdown menu.
And this is more example text.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<div class="dropdown-menu text-body-secondary" style="max-width: 200px;">
<p class="p-2 pb-0 mb-1">
Some example text that’s free-flowing within the dropdown menu.
</p>
<p class="p-2 mb-0">
And this is more example text.
</p>
</div>
</div>
<div class="dropdown"> <button class="btn btn-secondary
dropdown-toggle" type="button" id="dropdownMenuButton"
data-bs-toggle="dropdown" aria-expanded="false"> Dropdown button
</button> <div class="dropdown-menu text-body-secondary"
style="max-width: 200px;"> <p class="p-2 pb-0 mb-1"> Some example
text that’s free-flowing within the dropdown menu. </p> <p class="p-2
mb-0"> And this is more example text. </p> </div> </div>
Put a form within a dropdown menu, or make it into a dropdown menu, and use
margin or padding utilities to give it the negative space you
require.
<div class="dropdown">
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
Dropdown form
</button>
<div class="dropdown-menu">
<form class="p-2">
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="email@example.com">
</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>
</div>
<div class="dropdown"> <button type="button" class="btn
btn-primary dropdown-toggle" data-bs-toggle="dropdown"
aria-expanded="false" data-bs-auto-close="outside"> Dropdown form
</button> <div class="dropdown-menu"> <form class="p-2">
<div class="mb-3"> <label for="exampleDropdownFormEmail1"
class="form-label">Email address</label> <input type="email"
class="form-control" id="exampleDropdownFormEmail1"
placeholder="email@example.com"> </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> </div>
<div class="dropdown">
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
Dropdown form
</button>
<div class="dropdown-menu">
<form class="p-2">
<div class="mb-3">
<label for="exampleDropdownFormEmail2" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="email@example.com">
</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>
</div>
</div>
<div class="dropdown"> <button type="button" class="btn
btn-primary dropdown-toggle" data-bs-toggle="dropdown"
aria-expanded="false" data-bs-auto-close="outside"> Dropdown form
</button> <div class="dropdown-menu"> <form class="p-2">
<div class="mb-3"> <label for="exampleDropdownFormEmail2"
class="form-label">Email address</label> <input type="email"
class="form-control" id="exampleDropdownFormEmail2"
placeholder="email@example.com"> </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> </div> </div>
Dropdown options
Use data-bs-offset or data-bs-reference to change the location of the
dropdown.
Offset
Reference
Toggle Dropdown
<div class="d-flex">
<div class="dropdown me-1">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20">
Offset
</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>
</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" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent">
<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>
</div>
<div class="d-flex"> <div class="dropdown me-1"> <button
type="button" class="btn btn-secondary dropdown-toggle"
data-bs-toggle="dropdown" aria-expanded="false"
data-bs-offset="10,20"> Offset </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> </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"
data-bs-toggle="dropdown" aria-expanded="false"
data-bs-reference="parent"> <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> </div>
Auto close behavior
By default, the dropdown menu is closed when clicking inside or outside the dropdown menu. You can use
the autoClose option to change this behavior of the dropdown.
Default dropdown
Clickable inside
Clickable outside
Manual close
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false">
Default dropdown
</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">
<button
class="btn btn-secondary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
data-bs-auto-close="inside"
aria-expanded="false"
>
Clickable inside
</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">
<button
class="btn btn-secondary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
data-bs-auto-close="outside"
aria-expanded="false"
>
Clickable outside
</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">
<button
class="btn btn-secondary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
data-bs-auto-close="false"
aria-expanded="false"
>
Manual close
</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"> <button class="btn btn-secondary
dropdown-toggle" type="button" data-bs-toggle="dropdown"
data-bs-auto-close="true" aria-expanded="false"> Default dropdown
</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"> <button class="btn btn-secondary dropdown-toggle"
type="button" data-bs-toggle="dropdown"
data-bs-auto-close="inside" aria-expanded="false" > Clickable inside
</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">
<button class="btn btn-secondary dropdown-toggle" type="button"
data-bs-toggle="dropdown" data-bs-auto-close="outside"
aria-expanded="false" > Clickable outside </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"> <button
class="btn btn-secondary dropdown-toggle" type="button"
data-bs-toggle="dropdown" data-bs-auto-close="false"
aria-expanded="false" > Manual close </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>
Usage
Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by
toggling the .show class on the parent .dropdown-menu. The
data-bs-toggle="dropdown" attribute is relied on for closing dropdown menus at
an application level, so it’s a good idea to always use it.
On touch-enabled devices, opening a dropdown adds empty mouseover handlers to the
immediate children of the <body> element. This admittedly ugly hack is necessary
to work around a
quirk in iOs’ event delegation , which would otherwise prevent a tap anywhere outside of the dropdown from triggering the code
that closes the dropdown. Once the dropdown is closed, these additional empty
mouseover handlers are removed.
Via data attributes
Add data-bs-toggle="dropdown" to a link or button to toggle a dropdown.
< div class = " dropdown" >
< button type = " button" data-bs-toggle = " dropdown" aria-expanded = " false" > Dropdown trigger</ button>
< ul class = " dropdown-menu" >
...
</ ul>
</ div>
Via JavaScript
Dropdowns must have data-bs-toggle="dropdown" on their trigger element,
regardless of whether you call your dropdown via JavaScript or use the data-api.
Call the dropdowns via JavaScript:
const dropdownElementList = document. querySelectorAll ( '.dropdown-toggle' ) ;
const dropdownList = [ ... dropdownElementList] . map ( ( dropdownToggleEl ) => new bootstrap. Dropdown ( dropdownToggleEl) ) ;
Options
As options can be passed via data attributes or JavaScript, you can append an option name to
data-bs-, as in data-bs-animation="{value}". Make sure to change
the case type of the option name from “camelCase” to “kebab-case” when passing the
options via data attributes. For example, use
data-bs-custom-class="beautifier" instead of
data-bs-customClass="beautifier".
As of Bootstrap 5.2.0, all components support an experimental reserved data attribute
data-bs-config that can house simple component configuration as a JSON string. When an
element has data-bs-config='{"delay":0, "title":123}' and
data-bs-title="456" attributes, the final title value will be
456 and the separate data attributes will override values given on
data-bs-config. In addition, existing data attributes are able to house JSON values like
data-bs-delay='{"show":0,"hide":150}'.
The final configuration object is the merged result of data-bs-config,
data-bs-, and js object where the latest given key-value overrides the
others.
Name
Type
Default
Description
autoClose
boolean, string
true
Configure the auto close behavior of the dropdown:
true - the dropdown will be closed by clicking outside or inside the dropdown
menu.
false - the dropdown will be closed by clicking the toggle button and
manually calling hide or toggle method. (Also will not be closed
by pressing Esc key)
'inside' - the dropdown will be closed (only) by clicking inside the
dropdown menu.
'outside' - the dropdown will be closed (only) by clicking outside
the dropdown menu.
Note: the dropdown can always be closed with the Esc key.
boundary
string, element
'clippingParents'
Overflow constraint boundary of the dropdown menu (applies only to Popper’s preventOverflow
modifier). By default it’s clippingParents and can accept an HTMLElement
reference (via JavaScript only). For more information refer to Popper’s
detectOverflow docs .
display
string
'dynamic'
By default, we use Popper for dynamic positioning. Disable this with static.
offset
array, string, function
[0, 2]
Offset of the dropdown relative to its target. You can pass a string in data attributes with
comma separated values like: data-bs-offset="10,20". When a function is
used to determine the offset, it is called with an object containing the popper placement, the
reference, and popper rects as its first argument. The triggering element DOM node is passed
as the second argument. The function must return an array with two numbers:
skidding ,
distance . For more
information refer to Popper’s
offset docs .
popperConfig
null, object, function
null
To change Bootstrap’s default Popper config, see
Popper’s configuration . When
a function is used to create the Popper configuration, it’s called with an object that
contains the Bootstrap’s default Popper configuration. It helps you use and merge the default
with your own configuration. The function must return a configuration object for Popper.
reference
string, element, object
'toggle'
Reference element of the dropdown menu. Accepts the values of 'toggle',
'parent', an HTMLElement reference or an object providing
getBoundingClientRect. For more information refer to Popper’s
constructor docs and
virtual element docs .
Using function with popperConfig
const dropdown = new bootstrap. Dropdown ( element, {
popperConfig ( defaultBsPopperConfig ) {
}
} ) ;
Methods
Method
Description
dispose
Destroys an element’s dropdown. (Removes stored data on the DOM element)
getInstance
Static method which allows you to get the dropdown instance associated to a DOM element, you
can use it like this: bootstrap.Dropdown.getInstance(element).
getOrCreateInstance
Static method which returns a dropdown instance associated to a DOM element or create a new
one in case it wasn’t initialized. You can use it like this:
bootstrap.Dropdown.getOrCreateInstance(element).
hide
Hides the dropdown menu of a given navbar or tabbed navigation.
show
Shows the dropdown menu of a given navbar or tabbed navigation.
toggle
Toggles the dropdown menu of a given navbar or tabbed navigation.
update
Updates the position of an element’s dropdown.
Events
All dropdown events are fired at the toggling element and then bubbled up. So you can also add event
listeners on the .dropdown-menu’s parent element. hide.bs.dropdown and
hidden.bs.dropdown events have a clickEvent property (only when the original
Event type is click) that contains an Event Object for the click event.
Event type
Description
hide.bs.dropdown
Fires immediately when the hide instance method has been called.
hidden.bs.dropdown
Fired when the dropdown has finished being hidden from the user and CSS transitions have
completed.
show.bs.dropdown
Fires immediately when the show instance method is called.
shown.bs.dropdown
Fired when the dropdown has been made visible to the user and CSS transitions have completed.
const myDropdown = document. getElementById ( 'myDropdown' ) ;
myDropdown. addEventListener ( 'show.bs.dropdown' , ( event ) => {
} ) ;