Išskleidžiamieji meniu
Perjunkite kontekstines perdangas, kad būtų rodomi nuorodų sąrašai ir daugiau, naudodami Bootstrap išskleidžiamąjį papildinį.
Išskleidžiamuosius meniu galima perjungti, kontekstinės perdangos, skirtos nuorodų sąrašams rodyti ir kt. Jie yra interaktyvūs naudojant įtrauktą „Bootstrap“ išskleidžiamąjį „JavaScript“ papildinį. Jie perjungiami spustelėjus, o ne užvedus pelės žymeklį; tai tyčinis dizaino sprendimas.
Išskleidžiamieji meniu sukurti remiantis trečiosios šalies biblioteka Popper.js , kuri suteikia dinamišką padėties nustatymą ir peržiūros srities aptikimą. Prieš „Bootstrap JavaScript“ būtinai įtraukite popper.min.js arba naudokite bootstrap.bundle.min.js
/ bootstrap.bundle.js
kuriame yra Popper.js. Popper.js nėra naudojamas naršymo juostose išdėstyti išskleidžiamuosius meniu, tačiau dinaminis padėties nustatymas nereikalingas.
Jei kuriate „JavaScript“ iš šaltinio, tam reikiautil.js
.
WAI ARIA standartas apibrėžia tikrąjį valdiklį role="menu"
, tačiau tai būdinga į programą panašiems meniu, kurie suaktyvina veiksmus arba funkcijas. ARIA meniu gali būti tik meniu elementai, žymės langelio meniu elementai, akutinio mygtuko meniu elementai, radijo mygtukų grupės ir antriniai meniu.
Kita vertus, „Bootstrap“ išskleidžiamieji meniu yra sukurti taip, kad būtų bendri ir pritaikyti įvairioms situacijoms bei žymėjimo struktūroms. Pavyzdžiui, galima sukurti išskleidžiamuosius meniu, kuriuose yra papildomų įvesties ir formų valdiklių, tokių kaip paieškos laukai arba prisijungimo formos. Dėl šios priežasties Bootstrap nesitiki (ir automatiškai neprideda) jokių role
ir aria-
atributų, reikalingų tikriems ARIA meniu. Autoriai turės patys įtraukti šiuos konkretesnius atributus.
Tačiau „Bootstrap“ prideda įmontuotą daugelio standartinių klaviatūros meniu sąveikų palaikymą, pvz., galimybę naršyti per atskirus .dropdown-item
elementus naudojant žymeklio klavišus ir uždaryti meniu ESCmygtuku.
Apvyniokite išskleidžiamojo meniu jungiklį (savo mygtuką arba nuorodą) ir išskleidžiamąjį meniu .dropdown
arba kitą elementą, kuris deklaruoja position: relative;
. Išskleidžiamuosius meniu galima suaktyvinti iš <a>
arba <button>
elementų, kurie geriau atitiktų jūsų galimus poreikius.
Bet kuris singlas .btn
gali būti paverstas išskleidžiamuoju jungikliu su tam tikrais žymėjimo pakeitimais. Štai kaip galite juos pritaikyti darbui su bet <button>
kuriais elementais:
<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>
Ir su <a>
elementais:
<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>
Geriausia tai, kad tai galite padaryti naudodami bet kurį mygtuko variantą:
Panašiai sukurkite padalintų mygtukų išskleidžiamuosius meniu su beveik tokiais pačiais žymėjimais kaip ir vieno mygtuko išskleidžiamieji meniu, tačiau .dropdown-toggle-split
pridėkite tinkamą tarpą aplink išskleidžiamąjį meniu.
Naudojame šią papildomą klasę, kad sumažintume horizontalią padėtį padding
abiejose dėklo pusėse 25 % ir pašalintume tai margin-left
, kas pridedama prie įprastų mygtukų išskleidžiamųjų meniu. Dėl šių papildomų pakeitimų taškas yra padalijimo mygtuko centre ir šalia pagrindinio mygtuko pateikiama tinkamesnio dydžio smūgio sritis.
Mygtukų išskleidžiamieji meniu veikia su visų dydžių mygtukais, įskaitant numatytuosius ir padalintus išskleidžiamuosius mygtukus.
Suaktyvinkite išskleidžiamuosius meniu virš elementų pridėdami .dropup
prie pagrindinio elemento.
Suaktyvinkite išskleidžiamuosius meniu elementų dešinėje pridėdami .dropright
prie pagrindinio elemento.
Suaktyvinkite išskleidžiamuosius meniu elementų kairėje, pridėdami .dropleft
prie pagrindinio elemento.
Istoriškai išskleidžiamojo meniu turinys turėjo būti nuorodos, bet 4 v. versijoje tai nebėra. Dabar galite pasirinktinai naudoti <button>
elementus išskleidžiamuosiuose meniu, o ne tik <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>
Pagal numatytuosius nustatymus išskleidžiamasis meniu automatiškai pateikiamas 100 % iš viršaus ir išilgai kairiosios pirminio puslapio pusės. Pridėti .dropdown-menu-right
prie a .dropdown-menu
į dešinę lygiuoti išskleidžiamąjį meniu.
Galvas aukštyn! Išskleidžiamieji meniu yra išdėstyti naudojant Popper.js (išskyrus atvejus, kai jie yra naršymo juostoje).
<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>
Pridėkite antraštę prie veiksmų sekcijų žymėjimo bet kuriame išskleidžiamajame meniu.
<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>
Atskirkite susijusių meniu elementų grupes skirstytuvu.
<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>
Įdėkite formą į išskleidžiamąjį meniu arba paverskite ją išskleidžiamuoju meniu ir naudokite paraštės arba užpildymo priemones , kad suteiktumėte jai reikalingą neigiamą erdvę.
<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>
Pridėkite .active
prie elementų išskleidžiamajame meniu, kad jie būtų aktyvūs .
<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>
Pridėkite .disabled
prie elementų išskleidžiamajame meniu, kad jie būtų išjungti .
<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>
Naudodamas duomenų atributus arba „JavaScript“, išskleidžiamasis papildinys perjungia paslėptą turinį (išskleidžiamuosius meniu), perjungdamas .show
klasę pirminio sąrašo elemente. Atributas naudojamas data-toggle="dropdown"
uždarant išskleidžiamuosius meniu programos lygiu, todėl verta jį naudoti visada.
Įrenginiuose, kuriuose įgalintas jutiklinis, atidarius išskleidžiamąjį meniu , prie tiesioginių elemento antrinių elementų pridedamos tuščios ( $.noop
) tvarkyklės . Šis, žinoma, bjaurus įsilaužimas yra būtinas norint išspręsti „iOS“ įvykių delegavimo keistenybę , kuri kitu atveju neleistų palietus bet kurioje išskleidžiamojo meniu ribų suaktyvinti kodą, kuris uždaro išskleidžiamąjį meniu. Kai išskleidžiamasis meniu uždaromas, šios papildomos tuščios tvarkyklės pašalinamos.mouseover
<body>
mouseover
Pridėkite data-toggle="dropdown"
prie nuorodos arba mygtuko, kad perjungtumėte išskleidžiamąjį meniu.
Iškvieskite išskleidžiamuosius meniu naudodami „JavaScript“:
data-toggle="dropdown"
vis dar reikalingas
Nepriklausomai nuo to, ar iškviečiate išskleidžiamąjį meniu naudodami „JavaScript“, ar vietoj to naudojate duomenų API, data-toggle="dropdown"
visada turi būti išskleidžiamojo meniu aktyviklio elemente.
Parinktys gali būti perduodamos naudojant duomenų atributus arba JavaScript. Duomenų atributams pridėkite parinkties pavadinimą prie data-
, kaip ir data-offset=""
.
vardas | Tipas | Numatytas | apibūdinimas |
---|---|---|---|
kompensuoti | numeris | styga | funkcija | 0 | Išskleidžiamojo meniu poslinkis, palyginti su jo tikslu. Daugiau informacijos rasite Popper.js poslinkio dokumentuose . |
apversti | loginis | tiesa | Leisti išskleidžiamajam meniu apversti, jei atskaitos elementas sutampa. Norėdami gauti daugiau informacijos, žr. Popper.js apverčiamus dokumentus . |
riba | styga | elementas | 'scrollParent' | Išskleidžiamojo meniu perpildymo apribojimo riba. Priima , , arba HTMLElement nuorodos reikšmes 'viewport' ( 'window' tik 'scrollParent' JavaScript). Daugiau informacijos rasite Popper.js preventOverflow dokumentuose . |
Atkreipkite dėmesį, kai boundary
nustatyta bet kuri kita reikšmė nei 'scrollParent'
, stilius position: static
taikomas .dropdown
sudėtiniam rodiniui.
Metodas | apibūdinimas |
---|---|
$().dropdown('toggle') |
Perjungia tam tikros naršymo juostos arba skirtukų naršymo išskleidžiamąjį meniu. |
$().dropdown('update') |
Atnaujina elemento išskleidžiamojo meniu padėtį. |
$().dropdown('dispose') |
Sunaikina elemento išskleidžiamąjį meniu. |
Visi išskleidžiamieji įvykiai suaktyvinami .dropdown-menu
pirminiame elemente ir turi relatedTarget
ypatybę, kurios vertė yra perjungimo prieraišo elementas.
Renginys | apibūdinimas |
---|---|
show.bs.dropdown |
Šis įvykis suaktyvinamas iš karto, kai iškviečiamas rodyti egzempliorių metodas. |
shown.bs.dropdown |
Šis įvykis suaktyvinamas, kai išskleidžiamasis meniu tampa matomas vartotojui (lauks, kol bus atliktas CSS perėjimas). |
hide.bs.dropdown |
Šis įvykis suaktyvinamas iš karto, kai iškviečiamas slėpimo egzemplioriaus metodas. |
hidden.bs.dropdown |
Šis įvykis suaktyvinamas, kai išskleidžiamasis meniu baigiamas paslėpti nuo vartotojo (lauks, kol bus atlikti CSS perėjimai). |