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 .offcanvas
and .btn-close-white
to- .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-ը կիրառելու համար: Համոզվեք, որ դասը ավելացրեք offcanvas
offcanvas տարրին: Եթե ցանկանում եք, որ այն լռելյայն բացվի, ավելացրեք լրացուցիչ դասը 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...
})