Dropdowns
Skift kontekstuelle overlejringer for at vise lister over links og mere med Bootstrap dropdown-plugin'et.
Dropdowns kan skiftes, kontekstuelle overlejringer til at vise lister over links og mere. De er gjort interaktive med det inkluderede Bootstrap dropdown JavaScript-plugin. De skiftes ved at klikke, ikke ved at svæve; dette er en bevidst designbeslutning.
Dropdowns er bygget på et tredjepartsbibliotek, Popper.js , som giver dynamisk positionering og viewport-detektion. Sørg for at inkludere popper.min.js før Bootstraps JavaScript eller brug bootstrap.bundle.min.js
/ bootstrap.bundle.js
som indeholder Popper.js. Popper.js bruges dog ikke til at placere dropdowns i navbarer, da dynamisk positionering ikke er påkrævet.
Hvis du bygger vores JavaScript fra kilden, kræverutil.js
det .
WAI ARIA - standarden definerer en faktisk role="menu"
widget , men denne er specifik for applikationslignende menuer, der udløser handlinger eller funktioner. ARIA -menuer kan kun indeholde menupunkter, afkrydsningsfelter, menupunkter, alternativknapgrupper og undermenuer.
Bootstraps dropdowns er på den anden side designet til at være generiske og anvendelige til en række forskellige situationer og markup-strukturer. For eksempel er det muligt at oprette dropdowns, der indeholder yderligere input og formularkontrolelementer, såsom søgefelter eller loginformularer. Af denne grund forventer Bootstrap ikke (heller ikke automatisk tilføje) nogen af attributterne role
og aria-
, der kræves til ægte ARIA- menuer. Forfattere skal selv inkludere disse mere specifikke attributter.
Bootstrap tilføjer dog indbygget understøttelse af de fleste standard tastaturmenuinteraktioner, såsom muligheden for at bevæge sig gennem individuelle .dropdown-item
elementer ved hjælp af markørtasterne og lukke menuen med ESCtasten.
Ombryd rullemenuens til/fra-knap (din knap eller dit link) og rullemenuen i .dropdown
, eller et andet element, der erklærer position: relative;
. Dropdowns kan udløses fra <a>
eller <button>
elementer for bedre at passe til dine potentielle behov.
Enhver enkelt .btn
kan omdannes til en rullemenu med nogle markup-ændringer. Sådan kan du få dem til at fungere med begge <button>
elementer:
<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>
Og med <a>
elementer:
<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>
Det bedste er, at du også kan gøre dette med enhver knapvariant:
På samme måde kan du oprette rullemenuer med delte knap med stort set samme markering som rullemenuer med enkelt knap, men med tilføjelse af .dropdown-toggle-split
for korrekt afstand omkring rullemenuen.
Vi bruger denne ekstra klasse til at reducere det vandrette padding
på hver side af bjælken med 25 % og fjerne det margin-left
, der er tilføjet til almindelige knap-dropdowns. Disse ekstra ændringer holder feltet centreret i splitknappen og giver et mere passende størrelse hitområde ved siden af hovedknappen.
Knaprullemenuer fungerer med knapper i alle størrelser, inklusive standard- og opdelte rullemenuknapper.
Udløs rullemenuer over elementer ved at tilføje .dropup
til det overordnede element.
Udløs rullemenuer til højre for elementerne ved at tilføje .dropright
til det overordnede element.
Udløs rullemenuer til venstre for elementerne ved at tilføje .dropleft
til det overordnede element.
Historisk set skulle indholdet i rullemenuen være links, men det er ikke længere tilfældet med v4. Nu kan du valgfrit bruge <button>
elementer i dine dropdowns i stedet for blot <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>
Som standard placeres en rullemenu automatisk 100 % fra toppen og langs venstre side af dens forælder. Føj .dropdown-menu-right
til en .dropdown-menu
højrejuster rullemenuen.
Heads up! Dropdowns er placeret takket være Popper.js (undtagen når de er indeholdt i en 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>
Tilføj en overskrift til at mærke sektioner af handlinger i enhver rullemenu.
<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>
Adskil grupper af relaterede menupunkter med en skillelinje.
<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>
Sæt en formular i en rullemenu, eller gør den til en rullemenu, og brug margen- eller udfyldningsværktøjer til at give den den negative plads, du har brug for.
<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>
Føj .active
til elementer i rullemenuen for at style dem som aktive .
<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>
Føj .disabled
til elementer i rullemenuen for at style dem som deaktiverede .
<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 dataattributter eller JavaScript skifter dropdown-pluginnet skjult indhold (rullemenuer) ved at skifte .show
klassen på det overordnede listeelement. Attributten data-toggle="dropdown"
er afhængig af at lukke dropdown-menuer på et applikationsniveau, så det er en god idé altid at bruge det.
På berøringsaktiverede enheder tilføjer åbning af en rullemenu tomme ( $.noop
) mouseover
behandlere til de umiddelbare underordnede af <body>
elementet. Dette ganske vist grimme hack er nødvendigt for at omgå en særhed i iOS' begivenhedsdelegering , som ellers ville forhindre et tryk uden for dropdown-menuen i at udløse koden, der lukker dropdown-menuen. mouseover
Når rullemenuen er lukket, fjernes disse yderligere tomme handlere.
Føj data-toggle="dropdown"
til et link eller knap for at skifte til en rullemenu.
Kald rullemenuerne via JavaScript:
data-toggle="dropdown"
stadig påkrævet
Uanset om du kalder din dropdown via JavaScript eller i stedet bruger data-api, data-toggle="dropdown"
er det altid nødvendigt at være til stede på dropdownens trigger-element.
Indstillinger kan videregives via dataattributter eller JavaScript. For dataattributter skal du tilføje indstillingsnavnet til data-
, som i data-offset=""
.
Navn | Type | Standard | Beskrivelse |
---|---|---|---|
offset | nummer | streng | fungere | 0 | Forskydning af rullemenuen i forhold til dets mål. For mere information henvises til Popper.js's offset-dokumenter . |
vende | boolesk | rigtigt | Tillad dropdown at vende i tilfælde af en overlapning på referenceelementet. For mere information henvises til Popper.js's flip-dokumenter . |
grænse | streng | element | 'scrollParent' | Overløbsbegrænsningsgrænse for rullemenuen. Accepterer værdierne for 'viewport' , 'window' , 'scrollParent' eller en HTMLElement-reference (kun JavaScript). For mere information henvises til Popper.js's preventOverflow-dokumenter . |
Bemærk, når boundary
er indstillet til en anden værdi end 'scrollParent'
, anvendes typografien position: static
på .dropdown
beholderen.
Metode | Beskrivelse |
---|---|
$().dropdown('toggle') |
Skifter rullemenuen for en given navigationslinje eller navigation med faner. |
$().dropdown('update') |
Opdaterer placeringen af et elements dropdown. |
$().dropdown('dispose') |
Ødelægger et elements dropdown. |
Alle dropdown-hændelser udløses på .dropdown-menu
's overordnede element og har en relatedTarget
egenskab, hvis værdi er det skiftende ankerelement.
Begivenhed | Beskrivelse |
---|---|
show.bs.dropdown |
Denne hændelse udløses med det samme, når vis-instansmetoden kaldes. |
shown.bs.dropdown |
Denne hændelse udløses, når rullemenuen er gjort synlig for brugeren (vil vente på CSS-overgange for at fuldføre). |
hide.bs.dropdown |
Denne hændelse udløses med det samme, når hide instansmetoden er blevet kaldt. |
hidden.bs.dropdown |
Denne hændelse udløses, når dropdown-menuen er færdig med at blive skjult for brugeren (vil vente på CSS-overgange for at fuldføre). |