Rozbaľovacie ponuky
Pomocou rozbaľovacieho doplnku Bootstrap môžete prepínať kontextové prekrytia na zobrazenie zoznamov odkazov a ďalšie.
Rozbaľovacie zoznamy sú prepínateľné, kontextové prekrytia na zobrazenie zoznamov odkazov a ďalšie. Sú interaktívne vďaka doplnku JavaScript rozbaľovacej ponuky Bootstrap. Prepínajú sa kliknutím, nie umiestnením kurzora myši; ide o zámerné rozhodnutie o dizajne.
Rozbaľovacie zoznamy sú postavené na knižnici tretej strany, Popper.js , ktorá poskytuje dynamické určovanie polohy a detekciu výrezov. Nezabudnite zahrnúť popper.min.js pred JavaScript Bootstrapu alebo použite bootstrap.bundle.min.js
/ bootstrap.bundle.js
ktorý obsahuje Popper.js. Popper.js sa nepoužíva na umiestnenie rozbaľovacích zoznamov v navigačných paneloch, hoci dynamické určovanie polohy sa nevyžaduje.
Ak vytvárate náš JavaScript zo zdroja, vyžadujeutil.js
.
Štandard WAI ARIA definuje skutočnú role="menu"
miniaplikáciu , ale je to špecifické pre ponuky podobné aplikáciám, ktoré spúšťajú akcie alebo funkcie. Ponuky ARIA môžu obsahovať iba položky ponuky, položky ponuky začiarkavacích políčok, položky ponuky prepínačov, skupiny prepínačov a podponuky.
Na druhej strane rozbaľovacie ponuky Bootstrapu sú navrhnuté tak, aby boli všeobecné a použiteľné v rôznych situáciách a štruktúrach značiek. Napríklad je možné vytvoriť rozbaľovacie zoznamy, ktoré obsahujú ďalšie vstupy a ovládacie prvky formulárov, ako sú vyhľadávacie polia alebo prihlasovacie formuláre. Z tohto dôvodu Bootstrap neočakáva (ani automaticky nepridáva) žiadne z atribútov role
a požadovaných pre skutočné ponuky ARIA . Autori budú musieť zahrnúť tieto konkrétnejšie atribúty sami.aria-
Bootstrap však pridáva vstavanú podporu pre väčšinu štandardných interakcií s ponukami klávesnice, ako je napríklad možnosť prechádzať jednotlivými .dropdown-item
prvkami pomocou kurzorových kláves a zavrieť ponuku pomocou ESCklávesu.
Zabaľte prepínač rozbaľovacej ponuky (vaše tlačidlo alebo odkaz) a rozbaľovaciu ponuku do .dropdown
, alebo iného prvku, ktorý deklaruje position: relative;
. Rozbaľovacie zoznamy možno spustiť z prvkov <a>
alebo <button>
prvkov, aby lepšie vyhovovali vašim potenciálnym potrebám.
Akýkoľvek singel .btn
možno zmeniť na rozbaľovací prepínač s niekoľkými zmenami značiek. Tu je návod, ako ich môžete uviesť do prevádzky s oboma <button>
prvkami:
<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>
prvkami:
<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>
Najlepšie na tom je, že to môžete urobiť aj s akýmkoľvek variantom tlačidla:
Podobne vytvorte rozbaľovacie zoznamy s rozdelenými tlačidlami s prakticky rovnakým označením ako rozbaľovacie zoznamy s jedným tlačidlom, ale s pridaním .dropdown-toggle-split
správneho rozmiestnenia okolo rozbaľovacej striešky.
Túto extra triedu používame na zníženie vodorovnej polohy padding
na oboch stranách vsuvky o 25 % a na odstránenie margin-left
pridaných položiek pre bežné rozbaľovacie ponuky. Tieto dodatočné zmeny udržujú striešku vycentrovanú v rozdelenom tlačidle a poskytujú vhodnejšiu oblasť zásahu vedľa hlavného tlačidla.
Rozbaľovacie zoznamy tlačidiel fungujú s tlačidlami všetkých veľkostí vrátane predvolených a rozdelených rozbaľovacích tlačidiel.
Spustite rozbaľovacie ponuky nad prvkami pridaním .dropup
do nadradeného prvku.
Spustite rozbaľovacie ponuky napravo od prvkov pridaním .dropright
do nadradeného prvku.
Spustite rozbaľovacie ponuky naľavo od prvkov pridaním .dropleft
do nadradeného prvku.
Obsahom rozbaľovacej ponuky v minulosti museli byť odkazy, ale to už nie je prípad verzie 4. Teraz môžete voliteľne použiť <button>
prvky v rozbaľovacích zoznamoch namiesto iba <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>
V predvolenom nastavení je rozbaľovacia ponuka automaticky umiestnená 100 % zhora a pozdĺž ľavej strany nadradenej položky. Pridať .dropdown-menu-right
do a .dropdown-menu
zarovnať rozbaľovaciu ponuku doprava.
Hlavy hore! Rozbaľovacie zoznamy sú umiestnené vďaka Popper.js (okrem prípadov, keď sú obsiahnuté v navigačnom paneli).
<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>
Pridajte hlavičku na označenie sekcií akcií v ľubovoľnej rozbaľovacej ponuke.
<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>
Skupiny súvisiacich položiek ponuky oddeľte oddeľovačom.
<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>
Umiestnite formulár do rozbaľovacej ponuky alebo z neho urobte rozbaľovaciu ponuku a použite pomocné nástroje pre okraje alebo výplň , aby ste mu poskytli požadovaný negatívny priestor.
<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>
Pridať .active
k položkám v rozbaľovacej ponuke, aby ste ich naštýlovali ako aktívne .
<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>
Pridajte .disabled
položky v rozbaľovacej ponuke, aby ste ich označili ako zakázané .
<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>
Pomocou dátových atribútov alebo JavaScriptu rozbaľovací doplnok prepína skrytý obsah (rozbaľovacie ponuky) prepínaním .show
triedy na nadradenej položke zoznamu. Tento data-toggle="dropdown"
atribút sa používa pri zatváraní rozbaľovacích ponúk na úrovni aplikácie, takže je dobré ho vždy používať.
Na zariadeniach s dotykovým ovládaním pridá otvorenie rozbaľovacej ponuky k bezprostredným potomkom prvku prázdne obslužné nástroje ( $.noop
) . Tento, pravdaže, škaredý hack je potrebný na obídenie vtipu v delegovaní udalosti v systéme iOS , ktorý by inak zabránil klepnutiu kdekoľvek mimo rozbaľovacej ponuky spustiť kód, ktorý zatvorí rozbaľovaciu ponuku. Po zatvorení rozbaľovacej ponuky sa tieto ďalšie prázdne obslužné nástroje odstránia.mouseover
<body>
mouseover
Pridať data-toggle="dropdown"
k odkazu alebo tlačidlu na prepnutie rozbaľovacej ponuky.
Vyvolajte rozbaľovacie ponuky pomocou JavaScriptu:
data-toggle="dropdown"
stále požadované
Bez ohľadu na to, či zavoláte rozbaľovaciu ponuku cez JavaScript alebo namiesto toho použijete data-api, data-toggle="dropdown"
musí byť vždy prítomná na spúšťacom prvku rozbaľovacej ponuky.
Možnosti môžu byť odovzdané prostredníctvom dátových atribútov alebo JavaScriptu. Pre atribúty údajov pripojte názov voľby k data-
, ako v data-offset=""
.
názov | Typ | Predvolené | Popis |
---|---|---|---|
offset | číslo | reťazec | funkciu | 0 | Posun rozbaľovacej ponuky vzhľadom na jej cieľ. Ďalšie informácie nájdete v dokumentoch offsetu Popper.js . |
prevrátiť | boolovská hodnota | pravda | V prípade prekrytia referenčného prvku povoľte rozbaľovaciu ponuku prevrátiť. Ďalšie informácie nájdete v dokumentoch pre popper.js . |
hranica | reťazec | prvok | 'scrollParent' | Hranica obmedzenia pretečenia rozbaľovacej ponuky. Prijíma hodnoty 'viewport' , 'window' , 'scrollParent' alebo odkaz HTMLElement (iba JavaScript). Ďalšie informácie nájdete v dokumentoch preventOverflow Popper.js . |
Všimnite si, že keď boundary
je nastavená na inú hodnotu ako 'scrollParent'
, štýl position: static
sa použije na .dropdown
kontajner.
Metóda | Popis |
---|---|
$().dropdown('toggle') |
Prepína rozbaľovaciu ponuku daného navigačného panela alebo navigácie s kartami. |
$().dropdown('update') |
Aktualizuje pozíciu rozbaľovacej ponuky prvku. |
$().dropdown('dispose') |
Zničí rozbaľovaciu ponuku prvku. |
Všetky udalosti rozbaľovacej ponuky sa spúšťajú v .dropdown-menu
nadradenom prvku 's a majú relatedTarget
vlastnosť, ktorej hodnota je prepínací prvok kotvy.
Udalosť | Popis |
---|---|
show.bs.dropdown |
Táto udalosť sa spustí okamžite, keď je zavolaná metóda show instance. |
shown.bs.dropdown |
Táto udalosť sa spustí, keď sa rozbaľovacia ponuka zobrazí používateľovi (bude čakať na dokončenie prechodov CSS). |
hide.bs.dropdown |
Táto udalosť sa spustí okamžite po zavolaní metódy skrytia inštancie. |
hidden.bs.dropdown |
Táto udalosť sa spustí, keď sa rozbaľovacia ponuka skončí skrytím pred používateľom (bude čakať na dokončenie prechodov CSS). |