Veksle kontekstuelle overlegg for å vise lister over lenker og mer med Bootstrap dropdown-plugin.
Oversikt
Rullegardiner er vekslebare, kontekstuelle overlegg for å vise lister over lenker og mer. De er gjort interaktive med den inkluderte Bootstrap dropdown JavaScript-plugin. De byttes ved å klikke, ikke ved å sveve; dette er en tilsiktet designbeslutning .
Dropdowns er bygget på et tredjepartsbibliotek, Popper.js , som gir dynamisk posisjonering og visningsportdeteksjon. Sørg for å inkludere popper.min.js før Bootstraps JavaScript eller bruk bootstrap.bundle.min.js/ bootstrap.bundle.jssom inneholder Popper.js. Popper.js brukes ikke til å plassere rullegardinmenyene i navbarer, men da dynamisk posisjonering ikke er nødvendig.
Hvis du bygger JavaScript fra kilden, kreverutil.js det .
tilgjengelighet
WAI ARIA - standarden definerer en faktisk role="menu"widget , men dette er spesifikt for applikasjonslignende menyer som utløser handlinger eller funksjoner. ARIA -menyer kan bare inneholde menyelementer, avmerkingsboksmenyelementer, alternativknappmenyelementer, alternativknappgrupper og undermenyer.
Bootstraps rullegardinmenyer er på den annen side designet for å være generiske og anvendelige for en rekke situasjoner og markup-strukturer. For eksempel er det mulig å lage rullegardinmenyene som inneholder ytterligere inndata og skjemakontroller, for eksempel søkefelt eller påloggingsskjemaer. Av denne grunn forventer ikke Bootstrap (eller legger til automatisk) noen av attributtene roleog aria-som kreves for ekte ARIA - menyer. Forfattere må inkludere disse mer spesifikke attributtene selv.
Bootstrap legger imidlertid til innebygd støtte for de fleste standard tastaturmenyinteraksjoner, for eksempel muligheten til å bevege seg gjennom individuelle .dropdown-itemelementer ved hjelp av markørtastene og lukke menyen med ESCtasten.
Eksempler
Pakk rullegardinmenyen (din knapp eller lenke) og rullegardinmenyen innenfor .dropdown, eller et annet element som erklærer position: relative;. Dropdowns kan utløses fra <a>eller <button>elementer for å passe bedre til dine potensielle behov.
Enkel knapp
Enhver enkelt .btnkan gjøres om til en rullegardinbryter med noen markupendringer. Slik kan du få dem til å fungere med begge <button>elementene:
På samme måte kan du lage rullegardinmenyene med delte knapper med praktisk talt samme markering som rullegardinmenyene med én knapp, men med tillegg av .dropdown-toggle-splitfor riktig avstand rundt rullegardinlisten.
Vi bruker denne ekstra klassen for å redusere den horisontale paddingpå hver side av karet med 25 % og fjerne den margin-leftsom er lagt til for vanlige knappe-rullegardinmenyene. De ekstra endringene holder feltet sentrert i delknappen og gir et mer passende størrelse treffområde ved siden av hovedknappen.
Historisk sett måtte innholdet i rullegardinmenyen være lenker, men det er ikke lenger tilfelle med v4. Nå kan du valgfritt bruke <button>elementer i rullegardinlistene dine i stedet for bare <a>s.
Du kan også opprette ikke-interaktive rullegardinelementer med .dropdown-item-text. Stil gjerne videre med tilpassede CSS- eller tekstverktøy.
Som standard er en rullegardinmeny automatisk plassert 100 % fra toppen og langs venstre side av overordnet. Legg .dropdown-menu-righttil en .dropdown-menutil høyre juster rullegardinmenyen.
Vær oppmerksom! Rullegardiner er plassert takket være Popper.js (bortsett fra når de er inneholdt i en navbar).
Responsiv justering
Hvis du vil bruke responsiv justering, deaktiver dynamisk posisjonering ved å legge til data-display="static"attributtet og bruk de responsive variasjonsklassene.
For å høyrejustere rullegardinmenyen med det gitte bruddpunktet eller større, legg til .dropdown-menu{-sm|-md|-lg|-xl}-right.
For å justere rullegardinmenyen til venstre.dropdown-menu-right med det gitte bruddpunktet eller større, legg til og .dropdown-menu{-sm|-md|-lg|-xl}-left.
Merk at du ikke trenger å legge til et data-display="static"attributt til rullegardinknapper i navbarer, siden Popper.js ikke brukes i navbarer.
Menyinnhold
Overskrifter
Legg til en overskrift for å merke deler av handlinger i en rullegardinmeny.
Plasser hvilken som helst friformtekst i en rullegardinmeny med tekst og bruk mellomromsverktøy . Merk at du sannsynligvis vil trenge flere størrelsesstiler for å begrense menybredden.
Noen eksempeltekst som er frittflytende i rullegardinmenyen.
Og dette er mer eksempeltekst.
Skjemaer
Sett et skjema i en rullegardinmeny, eller gjør det til en rullegardinmeny, og bruk margin- eller polstringsverktøy for å gi det den negative plassen du trenger.
Via dataattributter eller JavaScript veksler rullegardinpluginen skjult innhold (rullegardinmenyer) ved å veksle mellom .showklassen på det overordnede listeelementet. Attributtet er avhengig av data-toggle="dropdown"for å lukke rullegardinmenyer på et programnivå, så det er en god idé å alltid bruke det.
På berøringsaktiverte enheter legger du til tomme ( $.noop) mouseoverbehandlere ved å åpne en rullegardin til de umiddelbare underordnede av <body>elementet. Dette riktignok stygge hacket er nødvendig for å omgå en finurlighet i iOS' hendelsesdelegering , som ellers ville forhindret at et trykk hvor som helst utenfor rullegardinmenyen utløser koden som lukker rullegardinmenyen. Når rullegardinmenyen er lukket, mouseoverfjernes disse ekstra tomme behandlerne.
Via dataattributter
Legg data-toggle="dropdown"til en lenke eller knapp for å veksle mellom en rullegardin.
Via JavaScript
Ring rullegardinmenyene via JavaScript:
data-toggle="dropdown"fortsatt nødvendig
Uansett om du kaller ned rullegardinlisten din via JavaScript eller i stedet bruker data-api, data-toggle="dropdown"er det alltid nødvendig å være tilstede på rullegardinmenyens triggerelement.
Alternativer
Alternativer kan sendes via dataattributter eller JavaScript. For dataattributter, legg til alternativnavnet til data-, som i data-offset="".
Navn
Type
Misligholde
Beskrivelse
offset
nummer | streng | funksjon
0
Forskyvning av rullegardinmenyen i forhold til målet. For mer informasjon, se Popper.js sine offset-dokumenter .
snu
boolsk
ekte
Tillat dropdown å snu i tilfelle en overlapping på referanseelementet. For mer informasjon se Popper.js sine flip-dokumenter .
grense
streng | element
'scrollParent'
Overløpsbegrensningsgrense for rullegardinmenyen. Godtar verdiene til 'viewport', 'window', 'scrollParent'eller en HTMLElement-referanse (kun JavaScript). For mer informasjon, se Popper.js sine preventOverflow-dokumenter .
referanse
streng | element
'veksle'
Referanseelement i rullegardinmenyen. Godtar verdiene til 'toggle', 'parent', eller en HTMLElement-referanse. For mer informasjon, se Popper.js sin referenceObject docs .
vise
streng
"dynamisk"
Som standard bruker vi Popper.js for dynamisk posisjonering. Deaktiver dette med static.
Merk at når boundaryer satt til en annen verdi enn 'scrollParent', brukes stilen position: staticpå .dropdownbeholderen.
Metoder
Metode
Beskrivelse
$().dropdown('toggle')
Bytter rullegardinmenyen til en gitt navigasjonslinje eller navigering med faner.
$().dropdown('show')
Viser rullegardinmenyen til en gitt navigasjonslinje eller fanebasert navigasjon.
$().dropdown('hide')
Skjuler rullegardinmenyen til en gitt navigasjonslinje eller fanebasert navigasjon.
$().dropdown('update')
Oppdaterer posisjonen til et elements rullegardinmeny.
$().dropdown('dispose')
Ødelegger rullegardinmenyen til et element.
arrangementer
Alle rullegardinhendelser utløses på .dropdown-menu's overordnede element og har en relatedTargetegenskap, hvis verdi er det vekslende ankerelementet. hide.bs.dropdownog hidden.bs.dropdownhendelser har en clickEventegenskap (bare når den opprinnelige hendelsestypen er click) som inneholder et hendelsesobjekt for klikkhendelsen.
Begivenhet
Beskrivelse
show.bs.dropdown
Denne hendelsen utløses umiddelbart når vis-instansmetoden kalles.
shown.bs.dropdown
Denne hendelsen utløses når rullegardinmenyen er gjort synlig for brukeren (vil vente på CSS-overganger for å fullføre).
hide.bs.dropdown
Denne hendelsen utløses umiddelbart når hide-forekomstmetoden har blitt kalt.
hidden.bs.dropdown
Denne hendelsen utløses når rullegardinmenyen er ferdig skjult for brukeren (vil vente på CSS-overganger for å fullføre).