Բացվող պատուհաններ
Փոխարկեք համատեքստային ծածկույթները՝ հղումների ցուցակները և ավելին ցուցադրելու համար Bootstrap բացվող հավելվածի միջոցով:
Բացվող պատուհանները փոխարկվող, համատեքստային ծածկույթներ են՝ հղումների ցուցակները և ավելին ցուցադրելու համար: Դրանք ինտերակտիվ են ընդգրկված Bootstrap բացվող JavaScript հավելվածի հետ: Դրանք փոխվում են սեղմելով, ոչ թե սավառնելով. սա միտումնավոր նախագծային որոշում է:
Բացվող պատուհանները կառուցված են երրորդ կողմի գրադարանի վրա՝ Popper.js , որն ապահովում է դինամիկ դիրքավորում և տեսադաշտի հայտնաբերում: Համոզվեք, որ ներառեք popper.min.js-ը Bootstrap-ի JavaScript-ից առաջ կամ օգտագործեք bootstrap.bundle.min.js
/ bootstrap.bundle.js
որը պարունակում է Popper.js: Popper.js-ը չի օգտագործվում navbars-ում բացվող ցանկերը տեղադրելու համար, թեև դինամիկ դիրքավորումը չի պահանջվում:
Եթե դուք կառուցում եք մեր JavaScript-ը աղբյուրից, դա պահանջում էutil.js
:
WAI ARIA ստանդարտը սահմանում է իրական վիջեթ role="menu"
, բայց սա հատուկ է հավելվածի նման մենյուներին, որոնք գործարկում են գործողություններ կամ գործառույթներ: ARIA ընտրացանկերը կարող են պարունակել միայն ընտրացանկի տարրեր, վանդակի ընտրացանկի տարրեր, ռադիոկոճակի ընտրացանկի տարրեր, ռադիոկոճակների խմբեր և ենթամենյուներ:
Մյուս կողմից, Bootstrap-ի բացվող ցանկերը նախատեսված են որպես ընդհանուր և կիրառելի տարբեր իրավիճակների և նշագրման կառուցվածքների համար: Օրինակ, հնարավոր է ստեղծել բացվող պատուհաններ, որոնք պարունակում են լրացուցիչ մուտքեր և ձևերի վերահսկում, ինչպիսիք են որոնման դաշտերը կամ մուտքի ձևերը: Այս պատճառով, Bootstrap-ը չի ակնկալում (ոչ ինքնաբերաբար ավելացնում) ARIA մենյուների համար պահանջվող որևէ ատրիբուտ role
և ատրիբուտ: Հեղինակներն իրենք պետք է ներառեն այս ավելի կոնկրետ հատկանիշները:aria-
Այնուամենայնիվ, Bootstrap-ը ներկառուցված աջակցություն է ավելացնում ստեղնաշարի մենյուի ստանդարտ փոխազդեցությունների մեծ մասի համար, ինչպես օրինակ .dropdown-item
՝ կուրսորային ստեղների միջոցով առանձին տարրերով շարժվելու և մենյուը ESCստեղնով փակելու հնարավորությունը:
Փաթեթավորեք բացվող ընտրացանկը (ձեր կոճակը կամ հղումը) և բացվող ընտրացանկը .dropdown
կամ մեկ այլ տարր, որը հայտարարում է position: relative;
: Բացվող ցանկերը կարող են գործարկվել <a>
կամ <button>
տարրերից, որոնք ավելի լավ են համապատասխանում ձեր հնարավոր կարիքներին:
Ցանկացած սինգլ .btn
կարող է վերածվել բացվող անջատիչի՝ որոշ նշագծման փոփոխություններով: Ահա, թե ինչպես կարող եք դրանք աշխատել երկու <button>
տարրերի հետ.
<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>
Եվ <a>
տարրերով.
<div class="dropdown">
<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>
Լավագույնն այն է, որ դուք կարող եք դա անել ցանկացած կոճակի տարբերակով, ինչպես նաև.
<!-- Example single danger button -->
<div class="btn-group">
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Action
</button>
<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>
</div>
Նմանապես, ստեղծեք պառակտված կոճակների բացվող պատուհաններ գրեթե նույն նշագծումով, ինչ մեկ կոճակի բացվող պատուհանները, բայց .dropdown-toggle-split
բացվող տուփի շուրջ պատշաճ տարածության համար ավելացնելով:
Մենք օգտագործում ենք այս հավելյալ դասը՝ 25%-ով կրճատելու padding
երեսպատման երկու կողմերում գտնվող հորիզոնականը և հեռացնելու այն margin-left
, որն ավելացվել է կոճակների սովորական բացման համար: Այդ հավելյալ փոփոխությունները պահում են խցիկը կենտրոնացած պառակտման կոճակի վրա և ապահովում են ավելի համապատասխան չափի հարվածային տարածք հիմնական կոճակի կողքին:
<!-- Example split danger button -->
<div class="btn-group">
<button type="button" class="btn btn-danger">Action</button>
<button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<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>
</div>
Կոճակների բացվող կոճակները աշխատում են բոլոր չափերի կոճակների հետ, ներառյալ լռելյայն և բաժանված բացվող կոճակները:
<!-- Large button groups (default and split) -->
<div class="btn-group">
<button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Large button
</button>
<div class="dropdown-menu">
...
</div>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-lg" type="button">
Large split button
</button>
<button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
...
</div>
</div>
<!-- Small button groups (default and split) -->
<div class="btn-group">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Small button
</button>
<div class="dropdown-menu">
...
</div>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-sm" type="button">
Small split button
</button>
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
...
</div>
</div>
Գործարկեք բացվող ընտրացանկերը տարրերի վերևում՝ ավելացնելով .dropup
մայր տարրին:
<!-- Default dropup button -->
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropup
</button>
<div class="dropdown-menu">
<!-- Dropdown menu links -->
</div>
</div>
<!-- Split dropup button -->
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary">
Split dropup
</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu">
<!-- Dropdown menu links -->
</div>
</div>
Գործարկեք բացվող ընտրացանկերը տարրերի աջ կողմում՝ ավելացնելով .dropright
մայր տարրին:
<!-- Default dropright button -->
<div class="btn-group dropright">
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropright
</button>
<div class="dropdown-menu">
<!-- Dropdown menu links -->
</div>
</div>
<!-- Split dropright button -->
<div class="btn-group dropright">
<button type="button" class="btn btn-secondary">
Split dropright
</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropright</span>
</button>
<div class="dropdown-menu">
<!-- Dropdown menu links -->
</div>
</div>
Գործարկեք բացվող ընտրացանկերը տարրերի ձախ կողմում՝ ավելացնելով .dropleft
մայր տարրին:
<!-- Default dropleft button -->
<div class="btn-group dropleft">
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropleft
</button>
<div class="dropdown-menu">
<!-- Dropdown menu links -->
</div>
</div>
<!-- Split dropleft button -->
<div class="btn-group">
<div class="btn-group dropleft" role="group">
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="sr-only">Toggle Dropleft</span>
</button>
<div class="dropdown-menu">
<!-- Dropdown menu links -->
</div>
</div>
<button type="button" class="btn btn-secondary">
Split dropleft
</button>
</div>
Պատմականորեն բացվող ընտրացանկի բովանդակությունը պետք է լիներ հղումներ, բայց դա այլևս այդպես չէ v4-ի դեպքում: Այժմ դուք կարող եք կամայականորեն օգտագործել <button>
տարրեր ձեր իջնող ցանկերում՝ պարզապես <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>
Դուք կարող եք նաև ստեղծել ոչ ինտերակտիվ բացվող տարրեր .dropdown-item-text
. Ազատ զգալ ոճավորել հատուկ CSS կամ տեքստային կոմունալ ծառայություններ:
<div class="dropdown-menu">
<span class="dropdown-item-text">Dropdown item text</span>
<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>
Ավելացրե՛ք .active
տարրերին իջնող ցանկում՝ դրանք որպես ակտիվ ոճավորելու համար :
<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>
Ավելացրե՛ք .disabled
տարրերին բացվող ցանկում՝ դրանք որպես անջատված ոճավորելու համար :
<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>
Լռելյայնորեն, բացվող ընտրացանկը ավտոմատ կերպով տեղադրվում է 100% վերևից և իր ծնողի ձախ կողմում: Ավելացնել .dropdown-menu-right
a-ին .dropdown-menu
դեպի աջ հարթեցնել բացվող ընտրացանկը:
Գլուխը վեր Բացվող պատուհանները տեղադրվում են Popper.js-ի շնորհիվ (բացառությամբ այն դեպքերի, երբ դրանք պարունակվում են 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>
Ցանկացած բացվող ընտրացանկում գործողությունների բաժինները պիտակավորելու համար ավելացրեք վերնագիր:
<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>
Առանձնացրեք ընտրացանկի հարակից տարրերի խմբերը բաժանարարով:
<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>
Տեղադրեք ցանկացած ազատ ձևի տեքստ տեքստով բացվող ընտրացանկի մեջ և օգտագործեք տարածության կոմունալ ծառայություններ : Նկատի ունեցեք, որ մենյուի լայնությունը սահմանափակելու համար ձեզ ամենայն հավանականությամբ անհրաժեշտ կլինեն չափերի լրացուցիչ ոճեր:
<div class="dropdown-menu p-4 text-muted" style="max-width: 200px;">
<p>
Some example text that's free-flowing within the dropdown menu.
</p>
<p class="mb-0">
And this is more example text.
</p>
</div>
Ձևը դրեք բացվող մենյուի մեջ կամ դարձրեք այն բացվող ընտրացանկի մեջ և օգտագործեք լուսանցքի կամ լիցքավորման կոմունալ ծառայություններ ՝ ձեզ անհրաժեշտ բացասական տարածք տրամադրելու համար:
<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>
Օգտագործեք data-offset
կամ data-reference
փոխեք բացվող ցանկի գտնվելու վայրը:
<div class="d-flex">
<div class="dropdown mr-1">
<button type="button" class="btn btn-secondary dropdown-toggle" id="dropdownMenuOffset" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-offset="10,20">
Offset
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuOffset">
<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>
<div class="btn-group">
<button type="button" class="btn btn-secondary">Reference</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" id="dropdownMenuReference" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-reference="parent">
<span class="sr-only">Toggle Dropdown</span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuReference">
<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>
</div>
</div>
Տվյալների ատրիբուտների կամ JavaScript-ի միջոցով բացվող հավելվածը փոխում է թաքնված բովանդակությունը (բացվող ընտրացանկերը)՝ փոխելով .show
դասը մայր ցանկի տարրի վրա: Հատկանիշը data-toggle="dropdown"
հիմնվում է հավելվածի մակարդակով բացվող ընտրացանկերը փակելու համար, ուստի լավ գաղափար է միշտ օգտագործել այն:
Հպման հնարավորություն ունեցող սարքերում բացվող ցանկը ավելացնում է դատարկ ( $.noop
) մշակիչներ տարրի mouseover
անմիջական երեխաներին : <body>
Այս, անկասկած, տգեղ հաքերն անհրաժեշտ է iOS-ի իրադարձությունների պատվիրակության տարօրինակությունը լուծելու համար , որը հակառակ դեպքում կկանխի բացվող ցանկից դուրս ցանկացած վայրում հպումը գործարկելու այն կոդը, որը փակում է բացվող ցանկը: Երբ բացվող ցանկը փակվի, այս լրացուցիչ դատարկ mouseover
մշակիչները հեռացվում են:
Ավելացրեք data-toggle="dropdown"
հղմանը կամ կոճակին՝ բացվող ցանկը փոխարկելու համար:
<div class="dropdown">
<button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
</button>
<div class="dropdown-menu" aria-labelledby="dLabel">
...
</div>
</div>
Զանգահարեք բացվող ցանկերը JavaScript-ի միջոցով.
$('.dropdown-toggle').dropdown()
data-toggle="dropdown"
դեռ պահանջվում է
Անկախ նրանից՝ դուք կանչում եք ձեր բացվող ցանկը JavaScript-ի միջոցով, թե փոխարենը օգտագործում եք տվյալների api-ն, data-toggle="dropdown"
միշտ պահանջվում է ներկա լինել բացվող ցանկի գործարկման տարրում:
Ընտրանքները կարող են փոխանցվել տվյալների ատրիբուտների կամ JavaScript-ի միջոցով: Տվյալների ատրիբուտների համար ավելացրեք տարբերակի անունը data-
, ինչպես data-offset=""
.
Անուն | Տիպ | Կանխադրված | Նկարագրություն |
---|---|---|---|
օֆսեթ | համարը | լարային | ֆունկցիան | 0 | Բացվող ցանկի օֆսեթ՝ իր թիրախի համեմատ: Լրացուցիչ տեղեկությունների համար տես Popper.js-ի օֆսեթ փաստաթղթերը : |
մատով խփել | բուլյան | ճիշտ | Թույլատրել բացվող պատուհանին շրջել հղման տարրի վրա համընկնման դեպքում: Լրացուցիչ տեղեկությունների համար տե՛ս Popper.js-ի շրջադարձային փաստաթղթերը : |
սահման | լարային | տարր | «scrollParent» | Բացվող ընտրացանկի հորդառատ սահմանափակման սահմանը: Ընդունում է 'viewport' , 'window' , 'scrollParent' , կամ HTMLElement հղումի արժեքները (միայն JavaScript): Լրացուցիչ տեղեկությունների համար տես Popper.js-ի preventOverflow փաստաթղթերը : |
հղում | լարային | տարր | «փոխարկել» | Բացվող ընտրացանկի տեղեկատու տարր: Ընդունում է 'toggle' , 'parent' , կամ HTMLElement հղումի արժեքները: Լրացուցիչ տեղեկությունների համար տես Popper.js-ի referenceObject docs-ը : |
ցուցադրել | լար | «դինամիկ» | Լռելյայնորեն մենք օգտագործում ենք Popper.js դինամիկ դիրքավորման համար: Անջատեք սա static . |
Ուշադրություն դարձրեք, երբ boundary
սահմանվում է որևէ այլ արժեք, քան 'scrollParent'
, ոճը position: static
կիրառվում է .dropdown
կոնտեյների վրա:
Մեթոդ | Նկարագրություն |
---|---|
$().dropdown('toggle') |
Անջատում է տվյալ նավագոտու կամ ներդիրներով նավիգացիայի բացվող ընտրացանկը: |
$().dropdown('update') |
Թարմացնում է տարրի բացվող ցանկի դիրքը: |
$().dropdown('dispose') |
Ոչնչացնում է տարրի բացվող ցանկը: |
Բոլոր իջնող իրադարձությունները գործարկվում են .dropdown-menu
'-ի մայր տարրի վրա և ունեն relatedTarget
հատկություն, որի արժեքը փոխարկվող խարիսխի տարրն է: hide.bs.dropdown
իսկ hidden.bs.dropdown
իրադարձությունները ունեն clickEvent
հատկություն (միայն այն դեպքում, երբ սկզբնական իրադարձության տեսակն է click
), որը պարունակում է Իրադարձության օբյեկտ սեղմման իրադարձության համար:
Իրադարձություն | Նկարագրություն |
---|---|
show.bs.dropdown |
Այս իրադարձությունն անմիջապես գործարկվում է, երբ կանչվում է ցուցադրման օրինակի մեթոդը: |
shown.bs.dropdown |
Այս իրադարձությունը գործարկվում է, երբ բացվող ցանկը տեսանելի է դառնում օգտատիրոջը (կսպասի CSS անցումների ավարտին): |
hide.bs.dropdown |
Այս իրադարձությունը գործարկվում է անմիջապես, երբ կանչվում է թաքցնել օրինակի մեթոդը: |
hidden.bs.dropdown |
Այս իրադարձությունը գործարկվում է, երբ բացվող ցանկն ավարտվում է օգտագործողից թաքցնելու համար (կսպասի CSS անցումների ավարտին): |
$('#myDropdown').on('show.bs.dropdown', function () {
// do something…
})