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>
Демо во живо
Користете ги копчињата подолу за да прикажете и скриете елемент offcanvas преку JavaScript што ја менува .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>
елементот е оневозможено кога се видливи offcanvas и неговата заднина. Користете го 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 нема да се затвори кога ќе кликне надвор од неа.
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Променете го изгледот на offcanvases со помошни програми за подобро да ги совпаднете со различни контексти како темни ленти за навигација. Овде додаваме .text-bg-dark
на .offcanvas
и .btn-close-white
до .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
ја крие содржината во offcanvas под точката на 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 десно од приказот.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 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Како дел од пристапот на еволуирачки CSS променливи на Bootstrap, 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 користи неколку класи и атрибути за да се справи со кревање тешки работи:
.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
на елементот за автоматско доделување на контрола на еден надворешен елемент. Атрибутот data-bs-target
прифаќа CSS избирач за да се примени offcanvas. Не заборавајте да ја додадете класата offcanvas
во елементот offcanvas. Ако сакате стандардно да се отвори, додадете ја дополнителната класа show
.
Отфрли
Отфрлањето може да се постигне со data
атрибутот на копче во offcanvas како што е прикажано подолу:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
или на копче надвор од offcanvas користејќи го 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 “ во „ ќебап-футрола “ кога ги пренесувате опциите преку атрибути на податоци. На пример, користете 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 заднина која не го затвора offcanvas кога ќе се кликне. |
keyboard |
булови | true |
Го затвора offcanvas кога е притиснато копчето за бегство. |
scroll |
булови | false |
Дозволете лизгање на телото додека е отворено offcanvas. |
Методи
Асинхрони методи и транзиции
Сите API методи се асинхрони и започнуваат транзиција . Тие се враќаат кај повикувачот штом ќе започне транзицијата, но пред да заврши . Дополнително, повик на метод на компонента во транзиција ќе се игнорира .
Погледнете ја нашата JavaScript документација за повеќе информации .
Ја активира вашата содржина како елемент offcanvas. Прифаќа изборни опции object
.
Можете да креирате offcanvas пример со конструкторот, на пример:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
Метод | Опис |
---|---|
getInstance |
Статички метод кој ви овозможува да ја добиете инстанцата offcanvas поврзана со елемент DOM. |
getOrCreateInstance |
Статички метод кој ви овозможува да го добиете примерот offcanvas поврзан со елементот DOM или да креирате нов во случај да не е иницијализиран. |
hide |
Сокрива елемент надвор од платно. Се враќа на повикувачот пред елементот offcanvas всушност да биде скриен (т.е. пред да се hidden.bs.offcanvas случи настанот). |
show |
Покажува елемент offcanvas. Се враќа кај повикувачот пред всушност да се прикаже елементот offcanvas (т.е. пред да се shown.bs.offcanvas случи настанот). |
toggle |
Вклучува елемент offcanvas на прикажан или скриен. Се враќа кај повикувачот пред да се покаже или скрие елементот offcanvas (т.е. пред да се случи настанот shown.bs.offcanvas или hidden.bs.offcanvas ). |
Настани
Класата offcanvas на Bootstrap изложува неколку настани за приклучување во 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...
})