Skift kontekstuelle overlejringer for at vise lister over links og mere med Bootstrap dropdown-plugin'et.
Oversigt
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.jssom 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 .
Tilgængelighed
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 roleog 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-itemelementer ved hjælp af markørtasterne og lukke menuen med ESCtasten.
Eksempler
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.
Enkelt knap
Enhver enkelt .btnkan omdannes til en rullemenu med nogle markup-ændringer. Sådan kan du få dem til at fungere med begge <button>elementer:
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-splitfor korrekt afstand omkring rullemenuen.
Vi bruger denne ekstra klasse til at reducere det vandrette paddingpå 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.
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.
Du kan også oprette ikke-interaktive dropdown-elementer med .dropdown-item-text. Du er velkommen til at style yderligere med brugerdefinerede CSS- eller tekstværktøjer.
Som standard placeres en rullemenu automatisk 100 % fra toppen og langs venstre side af dens forælder. Føj .dropdown-menu-righttil en .dropdown-menuhøjrejuster rullemenuen.
Heads up! Dropdowns er placeret takket være Popper.js (undtagen når de er indeholdt i en navbar).
Responsiv justering
Hvis du vil bruge responsiv justering, skal du deaktivere dynamisk positionering ved at tilføje data-display="static"attributten og bruge de responsive variationsklasser.
For at højrejustere rullemenuen med det givne brudpunkt eller større, skal du.dropdown-menu{-sm|-md|-lg|-xl}-right tilføje .
For at justere rullemenuen til venstre med det givne brudpunkt eller større, skal du.dropdown-menu-right tilføje og .dropdown-menu{-sm|-md|-lg|-xl}-left.
Bemærk, at du ikke behøver at tilføje en data-display="static"attribut til dropdown-knapper i navbarer, da Popper.js ikke bruges i navbarer.
Menuindhold
Overskrifter
Tilføj en overskrift til at mærke sektioner af handlinger i enhver rullemenu.
Placer enhver fritekst i en rullemenu med tekst, og brug mellemrumsværktøjer . Bemærk, at du sandsynligvis får brug for yderligere størrelsesstile for at begrænse menuens bredde.
Noget eksempel på tekst, der flyder frit i rullemenuen.
Og dette er mere eksempeltekst.
Formularer
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.
Via dataattributter eller JavaScript skifter dropdown-pluginnet skjult indhold (rullemenuer) ved at skifte .showklassen 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) mouseoverbehandlere 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. mouseoverNår rullemenuen er lukket, fjernes disse yderligere tomme handlere.
Via dataattributter
Føj data-toggle="dropdown"til et link eller knap for at skifte til en rullemenu.
Via JavaScript
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.
Muligheder
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.
Når en funktion bruges til at bestemme forskydningen, kaldes den med et objekt, der indeholder forskydningsdataene som dets første argument. Funktionen skal returnere et objekt med samme struktur. Det udløsende element DOM-node sendes som det andet argument.
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 .
reference
streng | element
'skift'
Referenceelement i rullemenuen. Accepterer værdierne for 'toggle', 'parent', eller en HTMLElement-reference. For mere information henvises til Popper.js' referenceObject docs .
Skærm
snor
'dynamisk'
Som standard bruger vi Popper.js til dynamisk positionering. Deaktiver dette med static.
Bemærk, når boundaryer indstillet til en anden værdi end 'scrollParent', anvendes typografien position: staticpå .dropdownbeholderen.
Metoder
Metode
Beskrivelse
$().dropdown('toggle')
Skifter rullemenuen for en given navigationslinje eller navigation med faner.
$().dropdown('show')
Viser rullemenuen for en given navigationslinje eller navigation med faner.
$().dropdown('hide')
Skjuler rullemenuen for en given navigationslinje eller navigation med faner.
$().dropdown('update')
Opdaterer placeringen af et elements dropdown.
$().dropdown('dispose')
Ødelægger et elements dropdown.
Begivenheder
Alle dropdown-hændelser udløses på .dropdown-menu's overordnede element og har en relatedTargetegenskab, hvis værdi er det skiftende ankerelement. hide.bs.dropdownog hidden.bs.dropdownhændelser har en clickEventegenskab (kun når den oprindelige hændelsestype er click), der indeholder et hændelsesobjekt for klikhændelsen.
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).