Rozbalovací seznamy
Pomocí rozbalovacího pluginu Bootstrap můžete přepínat kontextové překryvy pro zobrazení seznamů odkazů a další.
Rozbalovací seznamy jsou přepínatelné, kontextové překryvy pro zobrazení seznamů odkazů a další. Jsou interaktivní pomocí přiloženého JavaScriptového pluginu Bootstrap. Přepínají se kliknutím, nikoli najetím; toto je záměrné rozhodnutí o návrhu.
Rozbalovací seznamy jsou postaveny na knihovně třetí strany, Popper.js , která poskytuje dynamické určování polohy a detekci výřezů. Před JavaScript Bootstrapu nezapomeňte zahrnout popper.min.js nebo použijte bootstrap.bundle.min.js
/ bootstrap.bundle.js
, který obsahuje Popper.js. Popper.js se nepoužívá k umístění rozevíracích seznamů v navigačních panelech, ačkoli dynamické umístění není vyžadováno.
Pokud vytváříte náš JavaScript ze zdroje, vyžadujeutil.js
.
Standard WAI ARIA definuje skutečný role="menu"
widget , ale to je specifické pro nabídky podobné aplikacím, které spouštějí akce nebo funkce. Nabídky ARIA mohou obsahovat pouze položky nabídky, položky nabídky zaškrtávacích políček, položky nabídky přepínačů, skupiny přepínačů a podnabídky.
Na druhou stranu rozbalovací nabídky Bootstrapu jsou navrženy tak, aby byly obecné a použitelné pro různé situace a struktury značek. Je například možné vytvořit rozevírací seznamy, které obsahují další vstupy a ovládací prvky formulářů, jako jsou vyhledávací pole nebo přihlašovací formuláře. Z tohoto důvodu Bootstrap neočekává (ani automaticky nepřidává) žádné z atributů role
a požadovaných pro skutečné nabídky ARIA . Autoři budou muset tyto specifičtější atributy zahrnout sami.aria-
Bootstrap však přidává vestavěnou podporu pro většinu standardních interakcí s nabídkou klávesnice, jako je možnost procházet jednotlivými .dropdown-item
prvky pomocí kurzorových kláves a zavírat nabídku ESCklávesou.
Zabalte přepínač rozevíracího seznamu (vaše tlačítko nebo odkaz) a rozbalovací nabídku do .dropdown
, nebo jiného prvku, který deklaruje position: relative;
. Rozbalovací seznamy lze spouštět z prvků <a>
nebo <button>
prvků, aby lépe vyhovovaly vašim potenciálním potřebám.
Jakýkoli singl .btn
lze změnit na rozbalovací přepínač s některými změnami značek. Zde je návod, jak je můžete uvést do práce s oběma <button>
prvky:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown button
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
A s <a>
prvky:
<div class="dropdown show">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown link
</a>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
Nejlepší na tom je, že to můžete udělat s jakoukoli variantou tlačítka:
Podobně vytvořte rozbalovací seznamy rozdělených tlačítek s prakticky stejným označením jako rozbalovací seznamy s jedním tlačítkem, ale s přidáním .dropdown-toggle-split
správného rozestupu kolem rozbalovací stříšky.
Tuto extra třídu používáme ke snížení horizontály padding
na obou stranách stříšky o 25 % a odstranění toho margin-left
, co je přidáno pro běžné rozbalovací nabídky tlačítek. Tyto dodatečné změny udržují stříšku uprostřed rozděleného tlačítka a poskytují vhodnější velikost zásahové oblasti vedle hlavního tlačítka.
Rozbalovací seznamy tlačítek fungují s tlačítky všech velikostí, včetně výchozích a rozdělených rozbalovacích tlačítek.
Spusťte rozbalovací nabídky nad prvky přidáním .dropup
do nadřazeného prvku.
Spusťte rozevírací nabídky napravo od prvků přidáním .dropright
do nadřazeného prvku.
Trigger dropdown menus at the left of the elements by adding .dropleft
to the parent element.
Historically dropdown menu contents had to be links, but that’s no longer the case with v4. Now you can optionally use <button>
elements in your dropdowns instead of just <a>
s.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenu2">
<button class="dropdown-item" type="button">Action</button>
<button class="dropdown-item" type="button">Another action</button>
<button class="dropdown-item" type="button">Something else here</button>
</div>
</div>
By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. Add .dropdown-menu-right
to a .dropdown-menu
to right align the dropdown menu.
Heads up! Dropdowns are positioned thanks to Popper.js (except when they are contained in a navbar).
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Right-aligned menu
</button>
<div class="dropdown-menu dropdown-menu-right">
<button class="dropdown-item" type="button">Action</button>
<button class="dropdown-item" type="button">Another action</button>
<button class="dropdown-item" type="button">Something else here</button>
</div>
</div>
Add a header to label sections of actions in any dropdown menu.
<div class="dropdown-menu">
<h6 class="dropdown-header">Dropdown header</h6>
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
</div>
Separate groups of related menu items with a divider.
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</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-menu">
<form class="px-4 py-3">
<div class="form-group">
<label for="exampleDropdownFormEmail1">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="[email protected]">
</div>
<div class="form-group">
<label for="exampleDropdownFormPassword1">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck">
<label class="form-check-label" for="dropdownCheck">
Remember me
</label>
</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="form-group">
<label for="exampleDropdownFormEmail2">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="[email protected]">
</div>
<div class="form-group">
<label for="exampleDropdownFormPassword2">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password">
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck2">
<label class="form-check-label" for="dropdownCheck2">
Remember me
</label>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
Add .active
to items in the dropdown to style them as active.
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Regular link</a>
<a class="dropdown-item active" href="#">Active link</a>
<a class="dropdown-item" href="#">Another link</a>
</div>
Add .disabled
to items in the dropdown to style them as disabled.
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Regular link</a>
<a class="dropdown-item disabled" href="#">Disabled link</a>
<a class="dropdown-item" href="#">Another link</a>
</div>
Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the .show
class on the parent list item. The data-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 ($.noop
) 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.
Add data-toggle="dropdown"
to a link or button to toggle a dropdown.
Call the dropdowns via JavaScript:
data-toggle="dropdown"
still required
Regardless of whether you call your dropdown via JavaScript or instead use the data-api, data-toggle="dropdown"
is always required to be present on the dropdown’s trigger element.
Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-
, as in data-offset=""
.
Name | Type | Default | Description |
---|---|---|---|
offset | number | string | function | 0 | Offset of the dropdown relative to its target. For more information refer to Popper.js's offset docs. |
flip | boolean | true | Allow Dropdown to flip in case of an overlapping on the reference element. For more information refer to Popper.js's flip docs. |
boundary | string | element | 'scrollParent' | Overflow constraint boundary of the dropdown menu. Accepts the values of 'viewport' , 'window' , 'scrollParent' , or an HTMLElement reference (JavaScript only). For more information refer to Popper.js's preventOverflow docs. |
Note when boundary
is set to any value other than 'scrollParent'
, the style position: static
is applied to the .dropdown
container.
Method | Description |
---|---|
$().dropdown('toggle') |
Toggles the dropdown menu of a given navbar or tabbed navigation. |
$().dropdown('update') |
Updates the position of an element’s dropdown. |
$().dropdown('dispose') |
Destroys an element’s dropdown. |
All dropdown events are fired at the .dropdown-menu
’s parent element and have a relatedTarget
property, whose value is the toggling anchor element.
Event | Description |
---|---|
show.bs.dropdown |
This event fires immediately when the show instance method is called. |
shown.bs.dropdown |
Tato událost se spustí, když je rozbalovací nabídka viditelná pro uživatele (čeká na dokončení přechodů CSS). |
hide.bs.dropdown |
Tato událost se spustí okamžitě po zavolání metody skrytí instance. |
hidden.bs.dropdown |
Tato událost se spustí, když je rozbalovací nabídka skryta před uživatelem (čeká na dokončení přechodů CSS). |