Пазаканвас
Убудуйце ў свой праект схаваныя бакавыя панэлі для навігацыі, кошыкаў і іншага з дапамогай некалькіх класаў і нашага плагіна JavaScript.
Як гэта працуе
Offcanvas - гэта кампанент бакавой панэлі, які можна пераключаць з дапамогай JavaScript, каб з'яўляцца злева, справа ці знізу ад краю прагляду. Кнопкі або якары выкарыстоўваюцца ў якасці трыгераў, якія прымацоўваюцца да пэўных элементаў, якія вы перамыкаеце, а data
атрыбуты выкарыстоўваюцца для выкліку нашага JavaScript.
- Offcanvas выкарыстоўвае некаторыя з таго ж кода JavaScript, што і мадальныя. Канцэптуальна яны даволі падобныя, але гэта асобныя плагіны.
- Падобным чынам, некаторыя зыходныя зменныя Sass для стыляў і памераў offcanvas успадкоўваюцца ад зменных мадалу.
- Калі паказана, offcanvas уключае фон па змаўчанні, на які можна націснуць, каб схаваць offcanvas.
- Падобна да мадалаў, адначасова можна паказваць толькі адно палатно.
Галаву ўверх! Улічваючы, як CSS апрацоўвае анімацыю, вы не можаце выкарыстоўваць margin
або translate
на .offcanvas
элеменце. Замест гэтага выкарыстоўвайце клас як незалежны элемент абгорткі.
prefers-reduced-motion
медыя-запыту. Глядзіце раздзел аб
паменшаным руху нашай дакументацыі па спецыяльных магчымасцях .
Прыклады
Кампаненты Offcanvas
Ніжэй прыведзены прыклад па-за палатна, які паказваецца па змаўчанні (праз .show
) .offcanvas
. Offcanvas уключае падтрымку загалоўка з кнопкай закрыцця і неабавязковы клас цела для некаторых ініцыялаў padding
. Мы рэкамендуем вам уключаць загалоўкі offcanvas з дзеяннямі адхілення кожны раз, калі гэта магчыма, або забяспечваць відавочнае дзеянне адхілення.
Пазаканвас
<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>
Жывая дэманстрацыя
Выкарыстоўвайце кнопкі ніжэй, каб паказаць і схаваць элемент offcanvas праз 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 няма размяшчэння па змаўчанні, таму вы павінны дадаць адзін з класаў мадыфікатараў ніжэй;
.offcanvas-start
змяшчае offcanvas злева ад акна прагляду (паказана вышэй).offcanvas-end
размяшчае offcanvas справа ад акна прагляду.offcanvas-top
змяшчае offcanvas у верхняй частцы прагляду.offcanvas-bottom
размяшчае offcanvas унізе акна прагляду
Паспрабуйце верхні, правы і ніжні прыклады ніжэй.
Топ з палатна
<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>
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 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
пераключэння фону.
Каляровы з пракруткай
Паспрабуйце прагартаць астатнюю частку старонкі, каб убачыць гэтую опцыю ў дзеянні.
Offcanvas з фонам
.....
Фон з пракруткай
Паспрабуйце прагартаць астатнюю частку старонкі, каб убачыць гэтую опцыю ў дзеянні.
<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">Backdrop 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>
Даступнасць
Паколькі канцэптуальна панэль offcanvas з'яўляецца мадальным дыялогавым акном, не забудзьцеся дадаць aria-labelledby="..."
—спасылаючыся на загаловак offcanvas—у .offcanvas
. Звярніце ўвагу, што вам не трэба дадаваць, role="dialog"
бо мы ўжо дадаем гэта праз JavaScript.
Сас
Пераменныя
$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
хавае змест.offcanvas.show
паказвае змест.offcanvas-start
хавае пазаканвас злева.offcanvas-end
хавае пазаканвас справа.offcanvas-bottom
хавае палатно на дне
Дадайце кнопку адхілення з data-bs-dismiss="offcanvas"
атрыбутам, які запускае функцыянальнасць JavaScript. Абавязкова выкарыстоўвайце <button>
элемент з ім для правільнай працы на ўсіх прыладах.
Праз атрыбуты дадзеных
Пераключыць
Каб аўтаматычна прызначыць кіраванне адным элементам offcanvas, дадайце data-bs-toggle="offcanvas"
і data-bs-target
або href
да элемента. Атрыбут data-bs-target
прымае селектар CSS для прымянення offcanvas. Абавязкова дадайце клас offcanvas
да элемента 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
Уключыць уручную з дапамогай:
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 |
Дазволіць пракрутку цела, калі адкрытае поле offcanvas |
Метады
Асінхронныя метады і пераходы
Усе метады API асінхронныя і пачынаюць пераход . Яны вяртаюцца да абанента, як толькі пачынаецца пераход, але да яго заканчэння . Акрамя таго, выклік метаду пераходнага кампанента будзе ігнаравацца .
Для атрымання дадатковай інфармацыі глядзіце нашу дакументацыю па JavaScript .
Актывуе ваш кантэнт як элемент пазаканваса. Прымае дадатковыя параметры object
.
Вы можаце стварыць асобнік offcanvas з дапамогай канструктара, напрыклад:
var myOffcanvas = document.getElementById('myOffcanvas')
var bsOffcanvas = new bootstrap.Offcanvas(myOffcanvas)
Метад | Апісанне |
---|---|
toggle |
Пераключае элемент offcanvas на паказаны або схаваны. Вяртаецца да таго, хто выклікае, перш чым элемент offcanvas быў фактычна паказаны або схаваны (г.зн. да падзеі shown.bs.offcanvas або hidden.bs.offcanvas ). |
show |
Паказвае элемент па-за палатна. Вяртаецца да абанента да таго, як элемент offcanvas быў фактычна паказаны (г.зн. да таго , як shown.bs.offcanvas адбудзецца падзея). |
hide |
Хавае элемент offcanvas. Вяртаецца да абанента да таго, як элемент offcanvas быў фактычна схаваны (г.зн. да таго, як hidden.bs.offcanvas адбылася падзея). |
getInstance |
Статычны метад, які дазваляе атрымаць экзэмпляр offcanvas, звязаны з элементам DOM |
getOrCreateInstance |
Статычны метад, які дазваляе вам атрымаць экзэмпляр offcanvas, звязаны з элементам DOM, або стварыць новы, калі ён не быў ініцыялізаваны |
Падзеі
Клас offcanvas у Bootstrap паказвае некалькі падзей для падлучэння да функцыянальнасці offcanvas.
Тып падзеі | Апісанне |
---|---|
show.bs.offcanvas |
Гэта падзея запускаецца неадкладна пры show выкліку метаду асобніка. |
shown.bs.offcanvas |
Гэта падзея запускаецца, калі элемент offcanvas робіцца бачным для карыстальніка (будзе чакаць завяршэння пераходаў CSS). |
hide.bs.offcanvas |
Гэта падзея запускаецца адразу пасля hide выкліку метаду. |
hidden.bs.offcanvas |
Гэта падзея запускаецца, калі элемент offcanvas быў схаваны ад карыстальніка (будзе чакаць завяршэння пераходаў CSS). |
var myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', function () {
// do something...
})