Офканвас
Берничә класс һәм безнең JavaScript плагины белән навигация, сәүдә арбалары һәм башкалар өчен сезнең проектка яшерен такталар төзегез.
Ничек бу эшли
Офканвас - JavaScript аша күберәк компонент, ул күренешнең сул, уң яисә аскы читеннән күренергә мөмкин. Кнопка яки анкор триггер буларак кулланыла, сез алыштырган конкрет элементларга бәйләнгән, һәм data
атрибутлар безнең JavaScript куллану өчен кулланыла.
- Офканвас модальләр белән бер үк JavaScript кодын бүлешә. Концептуаль яктан алар бик охшаш, ләкин алар аерым плагиннар.
- Шулай ук, офканвас стиле һәм үлчәмнәре өчен кайбер чыганак Sass үзгәрүчәннәре модаль үзгәрүчәннәрдән мирас итеп алынган.
- Күрсәтелгәндә, оффанвас офканваны яшерү өчен басып була торган килешү фонын үз эченә ала.
- Модальләргә охшаган, берьюлы бер офканваны гына күрсәтергә мөмкин.
Идарә итә! CSS анимацияләрне ничек эшләгәнен исәпкә алып, сез margin
элементта translate
куллана .offcanvas
алмыйсыз. Киресенчә, классны мөстәкыйль төрү элементы итеп кулланыгыз.
prefers-reduced-motion
медиа соравына бәйле. Безнең документларның кыскартылган хәрәкәт бүлеген карагыз
.
Мисаллар
Офканвас компонентлары
Түбәндә офканвас мисал китерелгән, ул килешү буенча күрсәтелә (аша .show
) .offcanvas
. Офканваска ябык төймә булган баш өчен ярдәм һәм кайбер башлангыч өчен өстәмә класс керә padding
. Мөмкин булганда эштән азат итү чаралары белән офканвас башлыкларын кертергә, яисә ачыктан-ачык эштән азат итүне тәкъдим итәбез.
Офканвас
<div class="offcanvas offcanvas-start" 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 text-reset" 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 аша офканвас элементын күрсәтү һәм яшерү өчен астагы төймәләрне кулланыгыз, .show
класс белән элементны класска алыштыра .offcanvas
.
.offcanvas
эчтәлекне яшерә (килешү буенча).offcanvas.show
эчтәлек күрсәтә
Сез атрибут белән сылтама href
, яки атрибутлы төймә куллана аласыз data-bs-target
. Ике очракта data-bs-toggle="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 text-reset" 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" id="dropdownMenuButton" data-bs-toggle="dropdown">
Dropdown button
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<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>
Урнаштыру
Офканвас компонентлары өчен килешү урнаштыру юк, шуңа күрә сез түбәндәге үзгәртүче классларның берсен өстәргә тиеш;
.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 id="offcanvasTopLabel">Offcanvas top</h5>
<button type="button" class="btn-close text-reset" 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="#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 id="offcanvasRightLabel">Offcanvas right</h5>
<button type="button" class="btn-close text-reset" 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 text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body small">
...
</div>
</div>
Фон
<body>
Офканвас һәм аның фоны күренгәндә элементны әйләндерү сүндерелә . data-bs-scroll
Атрибутны <body>
әйләндерүне алыштыру һәм data-bs-backdrop
фонны алыштыру өчен кулланыгыз .
Әйләнү белән төсле
Бу вариантны эштә күрү өчен битнең калган өлешен әйләндереп карагыз.
Фон белән оффанвалар
.....
Арткы планда
Бу вариантны эштә күрү өчен битнең калган өлешен әйләндереп карагыз.
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button>
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBackdrop" aria-controls="offcanvasWithBackdrop">Enable backdrop (default)</button>
<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" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasScrollingLabel">Colored with scrolling</h5>
<button type="button" class="btn-close text-reset" 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>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasWithBackdrop" aria-labelledby="offcanvasWithBackdropLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasWithBackdropLabel">Offcanvas with backdrop</h5>
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>.....</p>
</div>
</div>
<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">Backdroped with scrolling</h5>
<button type="button" class="btn-close text-reset" 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>
Уңайлык
Офканвас панели концептуаль рәвештә модаль диалог булганлыктан, өстәргә онытмагыз - aria-labelledby="..."
офканвас исемен күрсәтеп .offcanvas
. Игътибар итегез, сез өстәргә кирәк түгел, role="dialog"
чөнки без аны JavaScript аша өстибез.
Сасс
Variзгәрешләр
$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
эчтәлекне яшерә.offcanvas.show
эчтәлеген күрсәтә.offcanvas-start
сулдагы офканваны яшерә.offcanvas-end
офканваны уңда яшерә.offcanvas-bottom
төбендә офканваны яшерә
data-bs-dismiss="offcanvas"
JavaScript функциясен эшләтеп җибәрүче атрибут белән эштән чыгару төймәсен өстәгез . <button>
Барлык җайланмаларда дөрес тәртип өчен элементны кулланыгыз .
Мәгълүмат атрибутлары аша
data-bs-toggle="offcanvas"
Бер оффанвас элементына контрольне автоматик рәвештә билгеләү өчен элементны өстәгез data-bs-target
. href
Атрибут офканваны data-bs-target
куллану өчен CSS селекторын кабул итә. offcanvas
Классны оффанвас элементына өстәргә онытмагыз . Килешү ачык булса, өстәмә класс өстәгез show
.
JavaScript аша
Кул белән эшләгез:
var offcanvasElementList = [].slice.call(document.querySelectorAll('.offcanvas'))
var offcanvasList = offcanvasElementList.map(function (offcanvasEl) {
return new bootstrap.Offcanvas(offcanvasEl)
})
Вариантлар
Вариантларны мәгълүмат атрибутлары яки JavaScript аша бирергә мөмкин. Мәгълүмат атрибутлары өчен вариант исемен data-bs-
өстәгез data-bs-backdrop=""
.
Исем | Тип | Килешү | Тасвирлау |
---|---|---|---|
backdrop |
буле | true |
Офканвалар ачык булганда, тәнгә фон кулланыгыз |
keyboard |
буле | true |
Качу ачкычы басылганда офканваны ябалар |
scroll |
буле | false |
Офканвалар ачык булганда тәнне әйләндерергә рөхсәт итегез |
Методлар
Асинхрон ысуллар һәм күчү
Барлык API ысуллары да асинхрон һәм күчү башлый . Күчерелеш башлангач, ләкин ул беткәнче шалтыратучыга кире кайталар . Моннан тыш, күчү компонентына методик чакыру игътибарсыз калачак .
Күбрәк мәгълүмат алу өчен безнең JavaScript документларын карагыз .
Эчтәлекне оффанвас элементы буларак активлаштыра. Өстәмә вариантларны кабул итә object
.
Сез конструктор белән офканвас инстанциясен булдыра аласыз, мәсәлән:
var myOffcanvas = document.getElementById('myOffcanvas')
var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas)
Метод | Тасвирлау |
---|---|
toggle |
Офканвас элементын күрсәтә яки яшерә. Офканвас элементы күрсәтелгән яки яшерелгәнче (ягъни вакыйга булганчы) шалтыратучыгаshown.bs.offcanvas кире кайта hidden.bs.offcanvas . |
show |
Офканвас элементын күрсәтә. Офканвас элементы күрсәтелгәнче (ягъни shown.bs.offcanvas вакыйга булганчы) шалтыратучыга кире кайта. |
hide |
Офканвас элементын яшерә. Офканвас элементы яшерелгәнче шалтыратучыга кире кайта (ягъни hidden.bs.offcanvas вакыйга булганчы). |
getInstance |
DOM элементы белән бәйләнгән оффанвас инстанциясен алырга мөмкинлек бирүче статик ысул |
getOrCreateInstance |
Статик ысул, сезгә DOM элементы белән бәйләнгән оффанвас инстанциясен алырга, яисә ул башланмаган очракта яңасын булдырырга мөмкинлек бирә. |
Вакыйгалар
Bootstrap офканвас класы офканвас функциясенә керү өчен берничә вакыйганы фаш итә.
Вакыйга төре | Тасвирлау |
---|---|
show.bs.offcanvas |
show Бу вакыйга инстанция ысулы чакырылганда шунда ук янып тора . |
shown.bs.offcanvas |
Бу вакыйга кулланучыга офканвас элементы күренгәндә эшләнә (CSS күчү тәмамлануын көтәр). |
hide.bs.offcanvas |
Бу вакыйга hide метод чакырылганнан соң ук җибәрелә. |
hidden.bs.offcanvas |
Бу вакыйга офканвас элементы кулланучыдан яшерелгәндә эшләнә (CSS күчү тәмамлануын көтә). |
var myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', function () {
// do something...
})