Офканвас
Берничә класс һәм безнең JavaScript плагины белән навигация, сәүдә арбалары һәм башкалар өчен сезнең проектка яшерен такталар төзегез.
Ничек бу эшли
Офканвас - JavaScript аша сул, уң, өске яки аскы читтән күренү өчен күберәк компонент. Кнопка яки анкор триггер буларак кулланыла, сез алыштырган конкрет элементларга бәйләнгән, һәм data
атрибутлар безнең JavaScript куллану өчен кулланыла.
- Офканвас модальләр белән бер үк JavaScript кодын бүлешә. Концептуаль яктан алар бик охшаш, ләкин алар аерым плагиннар.
- Шулай ук, офканвас стиле һәм үлчәмнәре өчен кайбер чыганак Sass үзгәрүчәннәре модаль үзгәрүчәннәрдән мирас итеп алынган.
- Күрсәтелгәндә, оффанвас офканваны яшерү өчен басып була торган килешү фонын үз эченә ала.
- Модальләргә охшаган, берьюлы бер офканваны гына күрсәтергә мөмкин.
Идарә итә! CSS анимацияләрне ничек эшләгәнен исәпкә алып, сез margin
элементта translate
куллана .offcanvas
алмыйсыз. Киресенчә, классны мөстәкыйль төрү элементы итеп кулланыгыз.
prefers-reduced-motion
медиа соравына бәйле. Безнең документларның кыскартылган хәрәкәт бүлеген карагыз
.
Мисаллар
Офканвас компонентлары
Түбәндә офканвас мисал китерелгән, ул килешү буенча күрсәтелә (кабызу аша .show
) .offcanvas
. Офканвас ябык төймәле башлам өчен ярдәмне һәм кайбер башлангыч өчен өстәмә тән классын үз эченә ала padding
. Мөмкин булганда эштән азат итү чаралары белән офканвас башлыкларын кертергә, яисә ачыктан-ачык эштән азат итүне тәкъдим итәбез.
Офканвас
<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 аша офканвас элементын күрсәтү һәм яшерү өчен астагы төймәләрне кулланыгыз, .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" 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>
Статик фон
Фон статикка куелгач, офканвас аның тышына баскач ябылмас.
Офканвас
<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
. Әгәр дә сездә тамчылар булса, өстәргә уйлагыз ..offcanvas
.btn-close-white
.btn-close
.dropdown-menu-dark
.dropdown-menu
Офканвас
Офканвас эчтәлеген монда урнаштырыгыз.
<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>
Onsаваплы
V5.2.0 өстәлдеOffаваплы оффанвас класслары эчтәлекне билгеле бер ноктадан һәм аста яшерәләр. Бу нокта өстендә эчтәлек гадәттәгечә эш итәчәк. Мәсәлән, .offcanvas-lg
оффканвада эчтәлекне өзек lg
ноктасы астына яшерә, ләкин эчтәлекне өзек өстендә күрсәтә lg
.
Offаваплы оффанвалар
Бу эчтәлек .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>
Breәрбер өзек өчен җаваплы офканвас класслары бар.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
Урнаштыру
Офканвас компонентлары өчен килешү урнаштыру юк, шуңа күрә сез аста үзгәртүче классларның берсен өстәргә тиеш.
.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>
Офканвас дөрес
<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>
Уңайлык
Офканвас панели концептуаль рәвештә модаль диалог булганлыктан, aria-labelledby="..."
офканвас исемен күрсәтеп, өстәргә онытмагыз .offcanvas
. Игътибар итегез, сез өстәргә кирәк түгел, role="dialog"
чөнки без аны JavaScript аша өстибез.
CSS
Variзгәрешләр
V5.2.0 өстәлдеBootstrap үсешенең CSS үзгәрүчәнлеге алымы кысаларында, оффанвас хәзерге вакытта җирле 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};
Сасс үзгәрүләр
$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
эчтәлекне яшерә.offcanvas.show
эчтәлеген күрсәтә.offcanvas-start
сулдагы офканваны яшерә.offcanvas-end
офканваны уңда яшерә.offcanvas-top
өстендә офканваны яшерә.offcanvas-bottom
төбендә офканваны яшерә
data-bs-dismiss="offcanvas"
JavaScript функциясен эшләтеп җибәрүче атрибут белән эштән чыгару төймәсен өстәгез . <button>
Барлык җайланмаларда дөрес тәртип өчен элементны кулланыгыз .
Мәгълүмат атрибутлары аша
Күчерү
Бер оффанвас элементына контрольне автоматик рәвештә билгеләү өчен һәм элементка өстәгез data-bs-toggle="offcanvas"
. Атрибут офканваны куллану өчен CSS селекторын кабул итә. Классны оффанвас элементына өстәргә онытмагыз . Килешү ачык булса, өстәмә класс өстәгез .data-bs-target
href
data-bs-target
offcanvas
show
Эштән чыгару
Эштән чыгару оффанвас эчендәге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 |
Офканвалар ачык булганда, тәнгә фон кулланыгыз. Альтернатив рәвештә, static басылганда офканваны япмаган фонны күрсәтегез. |
keyboard |
буле | true |
Качу ачкычы басылганда офканваны ябалар. |
scroll |
буле | false |
Офканвалар ачык булганда тәнне әйләндерергә рөхсәт итегез. |
Методлар
Асинхрон ысуллар һәм күчү
Барлык API ысуллары да асинхрон һәм күчү башлый . Күчерелеш башлангач, ләкин ул беткәнче шалтыратучыга кире кайталар . Моннан тыш, күчү компонентына методик чакыру игътибарсыз калачак .
Күбрәк мәгълүмат алу өчен безнең JavaScript документларын карагыз .
Эчтәлекне оффанвас элементы буларак активлаштыра. Өстәмә вариантларны кабул итә object
.
Сез конструктор белән офканвас инстанциясен булдыра аласыз, мәсәлән:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
Метод | Тасвирлау |
---|---|
getInstance |
DOM элементы белән бәйләнгән оффанвас инстанциясен алырга мөмкинлек бирүче статик ысул. |
getOrCreateInstance |
Статик ысул, сезгә DOM элементы белән бәйләнгән оффанвас инстанциясен алырга, яисә ул башланмаган очракта яңасын булдырырга мөмкинлек бирә. |
hide |
Офканвас элементын яшерә. Офканвас элементы яшерелгәнче (ягъни hidden.bs.offcanvas вакыйга булганчы) шалтыратучыга кире кайта. |
show |
Офканвас элементын күрсәтә. Офканвас элементы күрсәтелгәнче шалтыратучыга кире кайта (ягъни shown.bs.offcanvas вакыйга булганчы). |
toggle |
Офканвас элементын күрсәтә яки яшерә. Офканвас элементы күрсәтелгән яки яшерелгәнче (ягъни вакыйга булганчы) шалтыратучыгаshown.bs.offcanvas кире кайта hidden.bs.offcanvas . |
Вакыйгалар
Bootstrap офканвас класы офканвас функциясенә керү өчен берничә вакыйганы фаш итә.
Вакыйга төре | Тасвирлау |
---|---|
hide.bs.offcanvas |
Бу вакыйга hide метод чакырылганнан соң ук җибәрелә. |
hidden.bs.offcanvas |
Бу вакыйга офканвас элементы кулланучыдан яшерелгәндә эшләнә (CSS күчү тәмамлануын көтә). |
hidePrevented.bs.offcanvas |
Бу вакыйга оффанвалар күрсәтелгәндә, аның фоны static һәм оффанвалардан читтә басылганда эшләнә. Качу ачкычы басылып, keyboard вариант куелгач , вакыйга шулай ук атыла false . |
show.bs.offcanvas |
show Бу вакыйга инстанция ысулы чакырылганда шунда ук янып тора . |
shown.bs.offcanvas |
Бу вакыйга кулланучыга офканвас элементы күренгәндә эшләнә (CSS күчү тәмамлануын көтәр). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})