Växla kontextuella överlagringar för att visa listor med länkar och mer med rullgardinsprogrammet Bootstrap.
Översikt
Rullgardinsmenyer är växlingsbara, kontextuella överlagringar för att visa listor med länkar och mer. De görs interaktiva med den medföljande Bootstrap dropdown JavaScript-plugin. De växlas genom att klicka, inte genom att sväva; detta är ett avsiktligt designbeslut .
Dropdowns är byggda på ett tredje parts bibliotek, Popper.js , som ger dynamisk positionering och visningsportdetektering. Se till att inkludera popper.min.js före Bootstraps JavaScript eller använd bootstrap.bundle.min.js/ bootstrap.bundle.jssom innehåller Popper.js. Popper.js används inte för att placera rullgardinsmenyer i navigeringsfält men eftersom dynamisk positionering inte krävs.
Om du bygger vårt JavaScript från källan kräverutil.js det .
Tillgänglighet
WAI ARIA - standarden definierar en faktisk widget , men den är specifik för programliknande menyer som utlöser åtgärder eller funktioner. ARIA- menyer kan bara innehålla menyalternativ, kryssrutemenyalternativ, alternativknappsmenyalternativ, alternativknappsgrupper och undermenyer.role="menu"
Bootstraps rullgardinsmenyer, å andra sidan, är designade för att vara generiska och tillämpliga på en mängd olika situationer och uppmärkningsstrukturer. Det är till exempel möjligt att skapa rullgardinsmenyer som innehåller ytterligare inmatningar och formulärkontroller, såsom sökfält eller inloggningsformulär. Av denna anledning förväntar sig Bootstrap inte (eller lägger inte till automatiskt) något av attributen roleoch aria-som krävs för äkta ARIA- menyer. Författare måste själva inkludera dessa mer specifika attribut.
Bootstrap lägger dock till inbyggt stöd för de flesta vanliga tangentbordsmenyinteraktioner, såsom möjligheten att flytta genom enskilda .dropdown-itemelement med hjälp av markörtangenterna och stänga menyn med ESCtangenten.
Exempel
Slå in rullgardinsmenyn (din knapp eller länk) och rullgardinsmenyn inom .dropdown, eller ett annat element som deklarerar position: relative;. Dropdowns kan triggas från <a>eller <button>element för att bättre passa dina potentiella behov.
Enkel knapp
Vilken som helst .btnkan omvandlas till en rullgardinsmeny med några uppmärkningsändringar. Så här kan du få dem att fungera med båda <button>elementen:
På liknande sätt, skapa rullgardinsmenyn för delade knappar med praktiskt taget samma markering som rullgardinsmenyn för en enda knapp, men med tillägg av .dropdown-toggle-splitför korrekt avstånd runt rullgardinsmenyn.
Vi använder den här extra klassen för att minska det horisontella paddingpå vardera sidan av fältet med 25 % och ta bort det margin-leftsom har lagts till för vanliga knapprullgardinsmenyer. De extra ändringarna håller fältet centrerat i den delade knappen och ger ett mer passande träffområde bredvid huvudknappen.
Historiskt sett måste innehållet i rullgardinsmenyn vara länkar, men det är inte längre fallet med v4. Nu kan du valfritt använda <button>element i dina rullgardinsmenyer istället för bara <a>s.
Du kan också skapa icke-interaktiva rullgardinsobjekt med .dropdown-item-text. Styla gärna ytterligare med anpassade CSS- eller textverktyg.
Som standard placeras en rullgardinsmeny automatiskt 100 % uppifrån och längs den vänstra sidan av sin förälder. Lägg .dropdown-menu-righttill .dropdown-menuhögerjustera rullgardinsmenyn.
Se upp! Dropdown-menyn placeras tack vare Popper.js (förutom när de finns i ett navigeringsfält).
Responsiv anpassning
Om du vill använda responsiv justering, inaktivera dynamisk positionering genom att lägga till data-display="static"attributet och använd de responsiva variantklasserna.
Lägg till för att justera rullgardinsmenyn till höger med den givna brytpunkten eller större .dropdown-menu{-sm|-md|-lg|-xl}-right.
För att anpassa rullgardinsmenyn till vänster.dropdown-menu-right med den givna brytpunkten eller större, lägg till och .dropdown-menu{-sm|-md|-lg|-xl}-left.
Observera att du inte behöver lägga till ett data-display="static"attribut till rullgardinsknappar i navbarer, eftersom Popper.js inte används i navbarer.
Menyinnehåll
Rubriker
Lägg till en rubrik för att markera avsnitt av åtgärder i valfri rullgardinsmeny.
Placera valfri text i en rullgardinsmeny med text och använd mellanslagsverktyg . Observera att du förmodligen kommer att behöva ytterligare storleksstilar för att begränsa menyns bredd.
Lite exempeltext som är fritt flytande i rullgardinsmenyn.
Och det här är mer exempeltext.
Blanketter
Lägg ett formulär i en rullgardinsmeny, eller gör det till en rullgardinsmeny, och använd marginal- eller utfyllnadsverktyg för att ge det det negativa utrymme du behöver.
Via dataattribut eller JavaScript växlar rullgardinspluginen dolt innehåll (rullgardinsmenyer) genom att växla .showklassen på det överordnade listobjektet. Attributet data-toggle="dropdown"används för att stänga rullgardinsmenyer på applikationsnivå, så det är en bra idé att alltid använda det.
På beröringsaktiverade enheter lägger du till tomma ( $.noop) mouseoverhanterare genom att öppna en rullgardinsmeny till elementets omedelbara <body>underordnade. Detta visserligen fula hack är nödvändigt för att kringgå en egenhet i iOS händelsedelegering , som annars skulle förhindra att ett tryck någonstans utanför rullgardinsmenyn utlöser koden som stänger rullgardinsmenyn. När rullgardinsmenyn är stängd tas dessa ytterligare tomma mouseoverhanterare bort.
Via dataattribut
Lägg data-toggle="dropdown"till en länk eller knapp för att växla en rullgardinsmeny.
Via JavaScript
Ring rullgardinsmenyn via JavaScript:
data-toggle="dropdown"fortfarande krävs
Oavsett om du anropar din dropdown via JavaScript eller istället använder data-api, data-toggle="dropdown"måste alltid finnas på dropdownens triggerelement.
alternativ
Alternativ kan skickas via dataattribut eller JavaScript. För dataattribut, lägg till alternativnamnet till data-, som i data-offset="".
namn
Typ
Standard
Beskrivning
offset
nummer | sträng | fungera
0
Förskjutning av rullgardinsmenyn i förhållande till dess mål.
När en funktion används för att bestämma offset, anropas den med ett objekt som innehåller offsetdata som dess första argument. Funktionen måste returnera ett objekt med samma struktur. Det utlösande elementets DOM-nod skickas som det andra argumentet.
För mer information se Popper.js offset -dokument .
flip
booleskt
Sann
Tillåt Dropdown att vända om referenselementet överlappar. För mer information se Popper.js flip docs .
gräns
sträng | element
'scrollParent'
Översvämningsbegränsningsgräns för rullgardinsmenyn. Accepterar värdena för 'viewport', 'window', 'scrollParent'eller en HTMLElement-referens (endast JavaScript). För mer information se Popper.js preventOverflow -dokument .
referens
sträng | element
"växla"
Referenselement i rullgardinsmenyn. Accepterar värdena för 'toggle', 'parent', eller en HTMLElement-referens. För mer information, se Popper.js's referenceObject docs .
visa
sträng
'dynamisk'
Som standard använder vi Popper.js för dynamisk positionering. Inaktivera detta med static.
Observera att när boundaryär inställt på något annat värde än , tillämpas 'scrollParent'stilen på behållaren.position: static.dropdown
Metoder
Metod
Beskrivning
$().dropdown('toggle')
Växlar rullgardinsmenyn för ett givet navigeringsfält eller navigering med flikar.
$().dropdown('show')
Visar rullgardinsmenyn för ett givet navigeringsfält eller navigering med flikar.
$().dropdown('hide')
Döljer rullgardinsmenyn för ett givet navigeringsfält eller navigering med flikar.
$().dropdown('update')
Uppdaterar positionen för ett elements rullgardinsmeny.
$().dropdown('dispose')
Förstör ett elements rullgardinsmeny.
evenemang
Alla rullgardinshändelser utlöses på .dropdown-menu's överordnade element och har en relatedTargetegenskap, vars värde är det växlande ankarelementet. hide.bs.dropdownoch hidden.bs.dropdownhändelser har en clickEventegenskap (endast när den ursprungliga händelsetypen är click) som innehåller ett händelseobjekt för klickhändelsen.
Händelse
Beskrivning
show.bs.dropdown
Den här händelsen aktiveras omedelbart när metoden show-instans anropas.
shown.bs.dropdown
Den här händelsen aktiveras när rullgardinsmenyn har gjorts synlig för användaren (väntar på att CSS-övergångar ska slutföras).
hide.bs.dropdown
Denna händelse utlöses omedelbart när metoden hide instans har anropats.
hidden.bs.dropdown
Den här händelsen aktiveras när rullgardinsmenyn har döljs för användaren (väntar på att CSS-övergångar ska slutföras).