Offcanvas
Ստեղծեք թաքնված կողագոտեր ձեր նախագծի մեջ նավիգացիայի, գնումների զամբյուղների և ավելին մի քանի դասերի և մեր JavaScript հավելվածի միջոցով:
Ինչպես է դա աշխատում
Offcanvas-ը կողագոտի բաղադրիչ է, որը կարող է փոխարկվել JavaScript-ի միջոցով, որպեսզի հայտնվի տեսադաշտի ձախ, աջ, վերև կամ ներքևի եզրից: Կոճակները կամ խարիսխները օգտագործվում են որպես գործարկիչներ, որոնք կցվում են որոշակի տարրերի, որոնք դուք փոխում եք, և dataատրիբուտներն օգտագործվում են մեր JavaScript-ը կանչելու համար:
- Offcanvas-ը կիսում է JavaScript-ի նույն կոդերը, ինչ մոդալները: Հայեցակարգային առումով դրանք բավականին նման են, բայց դրանք առանձին պլագիններ են։
- Նմանապես, որոշ աղբյուրներ Sass փոփոխականներ offcanvas-ի ոճերի և չափերի համար ժառանգված են մոդալի փոփոխականներից:
- Երբ ցուցադրվում է, offcanvas-ը ներառում է լռելյայն հետնապատկեր, որի վրա կարելի է սեղմել՝ թաքցնելու offcanvas-ը:
- Մոդալների նման, միաժամանակ կարող է ցուցադրվել միայն մեկ offcanvas:
Գլուխը վեր Հաշվի առնելով, թե ինչպես է CSS-ը մշակում անիմացիաները, դուք չեք կարող օգտագործել marginկամ translateդրա վրա որևէ .offcanvasտարր: Փոխարենը, օգտագործեք դասը որպես անկախ փաթաթման տարր:
prefers-reduced-motionլրատվամիջոցների հարցումից: Տեսեք
մեր մատչելիության փաստաթղթերի կրճատված շարժման բաժինը :
Օրինակներ
Offcanvas բաղադրիչներ
Ստորև բերված է offcanvas օրինակ, որը ցուցադրվում է լռելյայն (միջոցով .show) .offcanvas: Offcanvas-ը ներառում է փակման կոճակով վերնագրի աջակցություն և որոշ սկզբնաղբյուրների համար ընտրովի մարմնի դաս padding: Առաջարկում ենք հնարավորության դեպքում ներառել offcanvas-ի վերնագրեր՝ մերժման գործողություններով կամ տրամադրել բացահայտ մերժման գործողություն:
Offcanvas
<div class="offcanvas offcanvas-start show" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.
</div>
</div>
Կենդանի ցուցադրություն
Օգտագործեք ստորև բերված կոճակները՝ JavaScript-ի միջոցով offcanvas տարրը ցուցադրելու և թաքցնելու համար, որը դասը փոխում է .showդասը դասի հետ տարրի վրա .offcanvas:
.offcanvasթաքցնում է բովանդակությունը (կանխադրված).offcanvas.showցույց է տալիս բովանդակությունը
Դուք կարող եք օգտագործել hrefատրիբուտով հղում կամ հատկանիշով կոճակ data-bs-target: Երկու դեպքում data-bs-toggle="offcanvas"էլ պահանջվում է.
Offcanvas
<a class="btn btn-primary" data-bs-toggle="offcanvas" href="#offcanvasExample" role="button" aria-controls="offcanvasExample">
Link with href
</a>
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" aria-controls="offcanvasExample">
Button with data-bs-target
</button>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasExample" aria-labelledby="offcanvasExampleLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasExampleLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div>
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
</div>
<div class="dropdown mt-3">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
Dropdown button
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
</div>
</div>
Մարմնի ոլորում
Տարրը ոլորելն <body>անջատված է, երբ տեսանելի են կտավից դուրս և դրա հետնապատկերը: Օգտագործեք data-bs-scrollհատկանիշը՝ <body>ոլորումը միացնելու համար:
Կտավից դուրս՝ մարմնի ոլորմամբ
Փորձեք ոլորել էջի մնացած մասը՝ այս տարբերակը գործողության մեջ տեսնելու համար:
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button>
<div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasScrollingLabel">Offcanvas with body scrolling</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Try scrolling the rest of the page to see this option in action.</p>
</div>
</div>
Մարմնի ոլորում և ֆոն
Կարող եք նաև ակտիվացնել <body>ոլորումը տեսանելի հետնապատկերով:
Ոլորման հետնապատկեր
Փորձեք ոլորել էջի մնացած մասը՝ այս տարբերակը գործողության մեջ տեսնելու համար:
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBothOptions" aria-controls="offcanvasWithBothOptions">Enable both scrolling & backdrop</button>
<div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" id="offcanvasWithBothOptions" aria-labelledby="offcanvasWithBothOptionsLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Backdrop with scrolling</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Try scrolling the rest of the page to see this option in action.</p>
</div>
</div>
Ստատիկ ֆոն
Երբ հետնաշերտը դրված է ստատիկի վրա, անջատված կտավը չի փակվի դրանից դուրս սեղմելիս:
Offcanvas
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#staticBackdrop" aria-controls="staticBackdrop">
Toggle static offcanvas
</button>
<div class="offcanvas offcanvas-start" data-bs-backdrop="static" tabindex="-1" id="staticBackdrop" aria-labelledby="staticBackdropLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="staticBackdropLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div>
I will not close if you click outside of me.
</div>
</div>
</div>
Մուգ անջատված կտավ
Ավելացված է v5.2.0-ումՓոխեք արտաքին կտավների տեսքը կոմունալ ծառայությունների միջոցով՝ դրանք ավելի լավ համապատասխանեցնելու տարբեր համատեքստերի, օրինակ՝ մուգ նավագոտու: Այստեղ մենք ավելացնում .text-bg-darkենք the .offcanvasand .btn-close-whiteto- .btn-closeին՝ մուգ երեսպատված կտավով պատշաճ ոճավորելու համար: Եթե դուք ունեք բացվող ցանկեր, մտածեք նաև ավելացնելու .dropdown-menu-darkմասին .dropdown-menu:
Offcanvas
Տեղադրեք offcanvas-ի բովանդակությունը այստեղ:
<div class="offcanvas offcanvas-start show text-bg-dark" tabindex="-1" id="offcanvasDark" aria-labelledby="offcanvasDarkLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasDarkLabel">Offcanvas</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvasDark" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Place offcanvas content here.</p>
</div>
</div>
Պատասխանատու
Ավելացված է v5.2.0-ումԱրձագանքող offcanvas դասերը թաքցնում են բովանդակությունը դիտակետից դուրս՝ նշված ընդմիջման կետից և ներքև: Այդ ընդմիջման կետից բարձր, ներսում պարունակությունը կգործի ինչպես միշտ: Օրինակ՝ .offcanvas-lgթաքցնում է բովանդակությունը անջատված կտավի մեջ՝ ընդմիջման կետից ցածր lg, բայց ցույց է տալիս բովանդակությունը ընդմիջման կետից վեր lg:
Պատասխանատու offcanvas
Սա բովանդակություն է .offcanvas-lg.
<button class="btn btn-primary d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasResponsive" aria-controls="offcanvasResponsive">Toggle offcanvas</button>
<div class="alert alert-info d-none d-lg-block">Resize your browser to show the responsive offcanvas toggle.</div>
<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="offcanvasResponsive" aria-labelledby="offcanvasResponsiveLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasResponsiveLabel">Responsive offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#offcanvasResponsive" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p class="mb-0">This is content within an <code>.offcanvas-lg</code>.</p>
</div>
</div>
Պատասխանատու offcanvas դասերը հասանելի են յուրաքանչյուր ընդմիջման կետի համար:
.offcanvas.offcanvas-sm.offcanvas-md.offcanvas-lg.offcanvas-xl.offcanvas-xxl
Տեղադրում
Offcanvas բաղադրիչների համար լռելյայն տեղակայում չկա, այնպես որ դուք պետք է ավելացնեք ստորև ներկայացված փոփոխիչների դասերից մեկը:
.offcanvas-startտեղադրում է կտավից դուրս տեսադաշտի ձախ կողմում (ցուցադրված է վերևում).offcanvas-endտեղադրում է կտավը տեսադաշտի աջ կողմում.offcanvas-topտեղադրում է կտավը տեսադաշտի վերևում.offcanvas-bottomտեղադրում է կտավը տեսադաշտի ներքևի մասում
Փորձեք վերևի, աջից և ներքևի օրինակները ստորև:
Կտավից վերև
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop">Toggle top offcanvas</button>
<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvasTop" aria-labelledby="offcanvasTopLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasTopLabel">Offcanvas top</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
...
</div>
</div>
Offcanvas ճիշտ է
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Toggle right offcanvas</button>
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasRightLabel">Offcanvas right</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
...
</div>
</div>
Կտավից դուրս
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom">Toggle bottom offcanvas</button>
<div class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasBottomLabel">Offcanvas bottom</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body small">
...
</div>
</div>
Մատչելիություն
Քանի որ offcanvas վահանակը հայեցակարգային առումով մոդալ երկխոսություն է, համոզվեք, որ ավելացրեք aria-labelledby="..."՝ հղում անելով offcanvas վերնագրին .offcanvas: Նկատի ունեցեք, որ ավելացնելու կարիք չկա, role="dialog"քանի որ մենք այն արդեն ավելացնում ենք JavaScript-ի միջոցով:
CSS
Փոփոխականներ
Ավելացված է v5.2.0-ումՈրպես Bootstrap-ի զարգացող CSS փոփոխականների մոտեցման մաս, offcanvas-ն այժմ օգտագործում է տեղական CSS փոփոխականներ՝ .offcanvasիրական ժամանակում ընդլայնված հարմարեցման համար: CSS փոփոխականների արժեքները սահմանվում են Sass-ի միջոցով, ուստի Sass-ի հարմարեցումը դեռևս աջակցվում է:
--#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
--#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
--#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
--#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
--#{$prefix}offcanvas-padding-y: #{$offcanvas-padding-y};
--#{$prefix}offcanvas-color: #{$offcanvas-color};
--#{$prefix}offcanvas-bg: #{$offcanvas-bg-color};
--#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
--#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
--#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
Sass փոփոխականներ
$offcanvas-padding-y: $modal-inner-padding;
$offcanvas-padding-x: $modal-inner-padding;
$offcanvas-horizontal-width: 400px;
$offcanvas-vertical-height: 30vh;
$offcanvas-transition-duration: .3s;
$offcanvas-border-color: $modal-content-border-color;
$offcanvas-border-width: $modal-content-border-width;
$offcanvas-title-line-height: $modal-title-line-height;
$offcanvas-bg-color: $modal-content-bg;
$offcanvas-color: $modal-content-color;
$offcanvas-box-shadow: $modal-content-box-shadow-xs;
$offcanvas-backdrop-bg: $modal-backdrop-bg;
$offcanvas-backdrop-opacity: $modal-backdrop-opacity;
Օգտագործումը
Offcanvas plugin-ը օգտագործում է մի քանի դասեր և հատկանիշներ՝ ծանր բարձրացնելու համար.
.offcanvasթաքցնում է բովանդակությունը.offcanvas.showցույց է տալիս բովանդակությունը.offcanvas-startթաքցնում է կտավը ձախ կողմում.offcanvas-endթաքցնում է աջ կողմում գտնվող կտավը.offcanvas-topթաքցնում է կտավը վերևում.offcanvas-bottomթաքցնում է կտավը ներքևում
Ավելացրեք անջատման կոճակը data-bs-dismiss="offcanvas"հատկանիշով, որը գործարկում է JavaScript-ի գործառույթը: Համոզվեք, որ օգտագործեք <button>տարրը դրա հետ բոլոր սարքերում պատշաճ վարքագծի համար:
Տվյալների ատրիբուտների միջոցով
Փոխարկել
Ավելացրեք data-bs-toggle="offcanvas"և a data-bs-targetկամ hrefտարրին՝ մեկ offcanvas տարրի ինքնաբերաբար կառավարումը նշանակելու համար: Հատկանիշն data-bs-targetընդունում է CSS ընտրիչ՝ offcanvas-ը կիրառելու համար: Համոզվեք, որ դասը ավելացրեք offcanvasoffcanvas տարրին: Եթե ցանկանում եք, որ այն լռելյայն բացվի, ավելացրեք լրացուցիչ դասը show:
Հեռացնել
Աշխատանքից հեռացնելը կարող է իրականացվել offcanvas-data ում գտնվող կոճակի հատկանիշով, ինչպես ցույց է տրված ստորև.
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
կամ անջատված կտավից դուրս գտնվող կոճակի վրա՝ օգտագործելով data-bs-targetստորև ցուցադրվածը.
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
JavaScript-ի միջոցով
Ձեռքով միացնել՝
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
Ընտրանքներ
Քանի որ ընտրանքները կարող են փոխանցվել տվյալների ատրիբուտների կամ JavaScript-ի միջոցով, կարող եք տարբերակի անուն ավելացնել data-bs-, ինչպես օրինակում data-bs-animation="{value}": Համոզվեք, որ փոխեք տարբերակի անվան պատյանների տեսակը « camelCase »-ից « kebab-case »՝ ընտրանքները տվյալների ատրիբուտների միջոցով փոխանցելիս: Օրինակ՝ օգտագործել data-bs-custom-class="beautifier"փոխարենը data-bs-customClass="beautifier":
Bootstrap 5.2.0-ի դրությամբ բոլոր բաղադրիչներն աջակցում են փորձարարական վերապահված տվյալների հատկանիշ data-bs-config, որը կարող է տեղավորել պարզ բաղադրիչի կազմաձևումը որպես JSON տող: Երբ տարրն ունի data-bs-config='{"delay":0, "title":123}'և data-bs-title="456"ատրիբուտներ, վերջնական titleարժեքը կլինի, 456և առանձին տվյալների ատրիբուտները կգերակայեն .-ին տրված արժեքներին data-bs-config: Բացի այդ, առկա տվյալների ատրիբուտները կարող են տեղավորել JSON արժեքներ, ինչպիսիք են data-bs-delay='{"show":0,"hide":150}'.
| Անուն | Տիպ | Կանխադրված | Նկարագրություն |
|---|---|---|---|
backdrop |
բուլյան կամ լարայինstatic |
true |
Կիրառեք հետնապատկեր մարմնի վրա, քանի դեռ offcanvas-ը բաց է: Որպես այլընտրանք, նշեք staticհետնաշերտը, որը չի փակում անջատված կտավը սեղմելիս: |
keyboard |
բուլյան | true |
Փակում է offcanvas-ը, երբ սեղմված է Escape ստեղնը: |
scroll |
բուլյան | false |
Թույլատրել մարմնի ոլորումը, քանի դեռ կտավից դուրս բաց է: |
Մեթոդներ
Ասինխրոն մեթոդներ և անցումներ
Բոլոր API մեթոդները ասինխրոն են և սկսում են անցում : Նրանք վերադառնում են զանգահարողին հենց որ անցումը սկսվի, բայց մինչև այն ավարտվի : Բացի այդ, անցումային բաղադրիչի վրա մեթոդի կանչը անտեսվելու է :
Լրացուցիչ տեղեկությունների համար տես մեր JavaScript փաստաթղթերը :
Ակտիվացնում է ձեր բովանդակությունը որպես offcanvas տարր: Ընդունում է ընտրովի տարբերակներ object:
Դուք կարող եք ստեղծել offcanvas օրինակ կոնստրուկտորով, օրինակ՝
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
| Մեթոդ | Նկարագրություն |
|---|---|
getInstance |
Ստատիկ մեթոդ, որը թույլ է տալիս ստանալ DOM տարրի հետ կապված offcanvas օրինակը: |
getOrCreateInstance |
Ստատիկ մեթոդ, որը թույլ է տալիս ստանալ offcanvas օրինակը, որը կապված է DOM տարրի հետ, կամ ստեղծել նորը, եթե այն նախաստորագրված չէ: |
hide |
Թաքցնում է offcanvas տարրը: Վերադառնում է զանգահարողին նախքան offcanvas տարրը իրականում թաքցվել է (այսինքն՝ նախքան hidden.bs.offcanvasիրադարձությունը տեղի ունենալը): |
show |
Ցույց է տալիս offcanvas տարրը: Վերադառնում է զանգահարողին՝ նախքան offcanvas տարրը փաստացի ցուցադրելը (այսինքն՝ նախքան shown.bs.offcanvasիրադարձությունը տեղի ունենալը): |
toggle |
Անջատում է կտավից դուրս տարրը՝ ցուցադրված կամ թաքցված: Վերադառնում է զանգահարողին նախքան offcanvas տարրը իրականում ցուցադրվել կամ թաքցվել է (այսինքն՝ նախքան իրադարձությունը shown.bs.offcanvasկամ hidden.bs.offcanvasիրադարձությունը տեղի ունենալը): |
Իրադարձություններ
Bootstrap-ի offcanvas դասը բացահայտում է մի քանի իրադարձություն՝ offcanvas ֆունկցիոնալությանը միանալու համար:
| Միջոցառման տեսակը | Նկարագրություն |
|---|---|
hide.bs.offcanvas |
Այս իրադարձությունը գործարկվում է անմիջապես, երբ hideմեթոդը կանչվում է: |
hidden.bs.offcanvas |
Այս իրադարձությունը գործարկվում է, երբ offcanvas տարրը թաքցված է օգտվողից (կսպասի CSS անցումների ավարտին): |
hidePrevented.bs.offcanvas |
Այս իրադարձությունը գործարկվում է, երբ offcanvas-ը ցուցադրվում է, դրա հետնապատկերը staticև սեղմում է offcanvas-ից դուրս: Միջոցառումը գործարկվում է նաև, երբ սեղմվում է փախուստի ստեղնը և keyboardընտրանքը սահմանվում է false: |
show.bs.offcanvas |
Այս իրադարձությունը գործարկվում է անմիջապես, երբ showկանչվում է օրինակի մեթոդը: |
shown.bs.offcanvas |
Այս իրադարձությունը գործարկվում է, երբ offcanvas տարրը տեսանելի է դառնում օգտատիրոջը (կսպասի CSS անցումների ավարտին): |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})