Offcanvas
V svoj projekt vgradite skrite stranske vrstice za navigacijo, nakupovalne vozičke in drugo z nekaj razredi in našim vtičnikom JavaScript.
Kako deluje
Offcanvas je komponenta stranske vrstice, ki jo je mogoče preklopiti prek JavaScripta, da se prikaže z levega, desnega, zgornjega ali spodnjega roba vidnega polja. Gumbi ali sidra se uporabljajo kot sprožilci, ki so pripeti na določene elemente, ki jih preklapljate, data
atributi pa se uporabljajo za priklic našega JavaScripta.
- Offcanvas ima nekaj iste kode JavaScript kot modali. Konceptualno sta si precej podobna, vendar sta ločena vtičnika.
- Podobno so nekatere izvorne spremenljivke Sass za sloge in dimenzije offcanvas podedovane iz modalnih spremenljivk.
- Ko je offcanvas prikazan, vključuje privzeto ozadje, ki ga lahko kliknete, da skrijete offcanvas.
- Podobno kot pri modalih je lahko naenkrat prikazan samo en offcanvas.
Glavo pokonci! Glede na to, kako CSS obravnava animacije, ne morete uporabiti margin
ali translate
na .offcanvas
elementu. Namesto tega uporabite razred kot neodvisen ovojni element.
prefers-reduced-motion
medijske poizvedbe. Oglejte si razdelek o
zmanjšanem gibanju v naši dokumentaciji o dostopnosti .
Primeri
Komponente Offcanvas
Spodaj je primer zunaj platna, ki je privzeto prikazan (prek .show
na .offcanvas
). Offcanvas vključuje podporo za glavo z gumbom za zapiranje in izbirni razred telesa za nekatere začetnice padding
. Predlagamo, da glave offcanvas vključite z dejanji opustitve, kadar koli je to mogoče, ali zagotovite izrecno dejanje opustitve.
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>
Demo v živo
Uporabite spodnje gumbe za prikaz in skrivanje elementa offcanvas prek JavaScripta, ki preklopi .show
razred na elementu z .offcanvas
razredom.
.offcanvas
skrije vsebino (privzeto).offcanvas.show
prikazuje vsebino
Uporabite lahko povezavo z href
atributom ali gumb z data-bs-target
atributom. V obeh primerih data-bs-toggle="offcanvas"
je potrebno.
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>
Drsenje telesa
Drsenje po <body>
elementu je onemogočeno, ko sta vidna izven platna in njegovo ozadje. Uporabite data-bs-scroll
atribut, da omogočite <body>
drsenje.
Offcanvas s pomikanjem telesa
Poskusite se pomakniti po preostalem delu strani, da vidite to možnost v akciji.
<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>
Drsenje telesa in ozadje
Omogočite lahko tudi <body>
drsenje z vidnim ozadjem.
Ozadje z drsenjem
Poskusite se pomakniti po preostalem delu strani, da vidite to možnost v akciji.
<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>
Statično ozadje
Ko je ozadje nastavljeno na statično, se offcanvas ne bo zaprl, ko kliknete zunaj njega.
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>
Temno brez platna
Dodano v v5.2.0Spremenite videz offcanvases s pripomočki, da jih bolje uskladite z različnimi konteksti, kot so temne vrstice za krmarjenje. Tukaj dodajamo .text-bg-dark
k .offcanvas
in .btn-close-white
k .btn-close
za pravilno oblikovanje s temnim offcanvas. Če imate znotraj spustne menije, razmislite o dodajanju .dropdown-menu-dark
v .dropdown-menu
.
Offcanvas
Tukaj postavite vsebino brez platna.
<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>
Odzivna
Dodano v v5.2.0Odzivni razredi offcanvas skrijejo vsebino zunaj vidnega polja od določene prelomne točke in navzdol. Nad to mejno točko se bo vsebina v njej obnašala kot običajno. Na primer, .offcanvas-lg
skrije vsebino v offcanvas pod lg
prelomno točko, vendar prikaže vsebino nad lg
prelomno točko.
Odziven offcanvas
To je vsebina znotraj .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>
Za vsako prelomno točko so na voljo odzivni razredi offcanvas.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
Umestitev
Za komponente offcanvas ni privzete postavitve, zato morate dodati enega od spodnjih razredov modifikatorjev.
.offcanvas-start
postavi offcanvas na levo od vidnega polja (prikazano zgoraj).offcanvas-end
postavi offcanvas na desno stran vidnega polja.offcanvas-top
postavi offcanvas na vrh vidnega polja.offcanvas-bottom
postavi offcanvas na dno vidnega polja
Preizkusite zgornje, desne in spodnje primere spodaj.
Top iz platna
<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 desno
<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>
Dno iz platna
<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>
Dostopnost
Ker je plošča offcanvas konceptualno modalno pogovorno okno, ne pozabite dodati aria-labelledby="..."
—ki se nanaša na naslov offcanvas—v .offcanvas
. Upoštevajte, da vam ni treba dodajati, role="dialog"
saj ga že dodajamo prek JavaScripta.
CSS
Spremenljivke
Dodano v v5.2.0Kot del Bootstrapovega razvijajočega se pristopa spremenljivk CSS zdaj offcanvas uporablja lokalne spremenljivke CSS .offcanvas
za izboljšano prilagajanje v realnem času. Vrednosti za spremenljivke CSS so nastavljene prek Sass, tako da je še vedno podprto tudi prilagajanje 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 spremenljivke
$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;
Uporaba
Vtičnik offcanvas uporablja nekaj razredov in atributov za obvladovanje težkega dela:
.offcanvas
skriva vsebino.offcanvas.show
prikazuje vsebino.offcanvas-start
skrije offcanvas na levi.offcanvas-end
skrije offcanvas na desni.offcanvas-top
skrije offcanvas na vrhu.offcanvas-bottom
skrije offcanvas na dnu
Dodajte gumb za opustitev z data-bs-dismiss="offcanvas"
atributom, ki sproži funkcijo JavaScript. Ne pozabite uporabiti <button>
elementa z njim za pravilno delovanje v vseh napravah.
Preko podatkovnih atributov
Preklopi
Dodajte data-bs-toggle="offcanvas"
in data-bs-target
ali href
elementu, da samodejno dodelite nadzor nad enim elementom offcanvas. Atribut data-bs-target
sprejme izbirnik CSS za uporabo offcanvas. Ne pozabite dodati razreda offcanvas
elementu offcanvas. Če želite, da je privzeto odprt, dodajte dodatni razred show
.
Odpusti
Zavrnitev je mogoče doseči z data
atributom na gumbu znotraj platna , kot je prikazano spodaj:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
ali na gumb zunaj platna z uporabo, data-bs-target
kot je prikazano spodaj:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
Prek JavaScripta
Omogoči ročno z:
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
Opcije
Ker je možnosti mogoče posredovati prek podatkovnih atributov ali JavaScripta, lahko dodate ime možnosti v data-bs-
, kot v data-bs-animation="{value}"
. Prepričajte se, da ste spremenili vrsto malega črke imena možnosti iz " camelCase " v " kebab-case ", ko posredujete možnosti prek podatkovnih atributov. Na primer, uporabite data-bs-custom-class="beautifier"
namesto data-bs-customClass="beautifier"
.
Od Bootstrap 5.2.0 vse komponente podpirajo poskusni atribut rezerviranih podatkov, data-bs-config
ki lahko hrani preprosto konfiguracijo komponente kot niz JSON. Ko ima element atribute data-bs-config='{"delay":0, "title":123}'
in data-bs-title="456"
, bo končna title
vrednost 456
in ločeni atributi podatkov bodo preglasili vrednosti, podane na data-bs-config
. Poleg tega lahko obstoječi atributi podatkov hranijo vrednosti JSON, kot je data-bs-delay='{"show":0,"hide":150}'
.
Ime | Vrsta | Privzeto | Opis |
---|---|---|---|
backdrop |
boolean ali nizstatic |
true |
Nanesite ozadje na telo, medtem ko je offcanvas odprt. Druga možnost je, da določite static za ozadje, ki ob kliku ne zapre platna. |
keyboard |
logično | true |
Zapre offcanvas, ko pritisnete tipko za izhod. |
scroll |
logično | false |
Dovoli drsenje telesa, ko je offcanvas odprt. |
Metode
Asinhrone metode in prehodi
Vse metode API so asinhrone in začnejo prehod . K klicatelju se vrnejo takoj, ko se prehod začne, vendar preden se konča . Poleg tega bo prezrt klic metode prehodne komponente .
Za več informacij si oglejte našo dokumentacijo JavaScript .
Aktivira vašo vsebino kot element offcanvas. Sprejema neobvezne možnosti object
.
Primerek offcanvas lahko ustvarite s konstruktorjem, na primer:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
Metoda | Opis |
---|---|
getInstance |
Statična metoda, ki vam omogoča pridobitev primerka offcanvas, povezanega z elementom DOM. |
getOrCreateInstance |
Statična metoda, ki vam omogoča, da pridobite primerek offcanvas, povezan z elementom DOM, ali ustvarite novega, če ni bil inicializiran. |
hide |
Skrije element zunaj platna. Vrne se klicatelju, preden je bil element offcanvas dejansko skrit (tj. preden hidden.bs.offcanvas pride do dogodka). |
show |
Prikazuje element zunaj platna. Vrne se klicatelju, preden je bil element offcanvas dejansko prikazan (tj. preden shown.bs.offcanvas pride do dogodka). |
toggle |
Preklopi element zunaj platna na prikazan ali skrit. Vrne se klicatelju, preden je element offcanvas dejansko prikazan ali skrit (tj. preden pride do dogodka shown.bs.offcanvas ali ).hidden.bs.offcanvas |
Dogodki
Bootstrapov razred offcanvas razkriva nekaj dogodkov za priključitev na funkcionalnost offcanvas.
Vrsta dogodka | Opis |
---|---|
hide.bs.offcanvas |
Ta dogodek se sproži takoj, ko hide je bila metoda poklicana. |
hidden.bs.offcanvas |
Ta dogodek se sproži, ko je bil element offcanvas skrit pred uporabnikom (bo počakal, da se zaključijo prehodi CSS). |
hidePrevented.bs.offcanvas |
Ta dogodek se sproži, ko je prikazano offcanvas, njegovo ozadje static in se izvede klik zunaj offcanvas-a. Dogodek se sproži tudi, ko pritisnete tipko za izhod in je keyboard možnost nastavljena na false . |
show.bs.offcanvas |
Ta dogodek se sproži takoj, ko show se pokliče metoda primerka. |
shown.bs.offcanvas |
Ta dogodek se sproži, ko je element offcanvas viden uporabniku (počakal bo na dokončanje prehodov CSS). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})