Offcanvas
Ugradite skrivene bočne trake u svoj projekt za navigaciju, kolica za kupnju i više s nekoliko klasa i našim JavaScript dodatkom.
Kako radi
Offcanvas je komponenta bočne trake koja se putem JavaScripta može prebaciti tako da se prikazuje s lijevog, desnog, gornjeg ili donjeg ruba prozora. Gumbi ili sidra koriste se kao okidači koji su pridruženi određenim elementima koje mijenjate, a data
atributi se koriste za pozivanje našeg JavaScripta.
- Offcanvas dijeli dio istog JavaScript koda kao modali. Konceptualno su prilično slični, ali su zasebni dodaci.
- Slično tome, neke izvorne Sass varijable za offcanvasove stilove i dimenzije naslijeđene su od modalnih varijabli.
- Kada se prikaže, offcanvas uključuje zadanu pozadinu na koju se može kliknuti da se sakrije offcanvas.
- Slično modalima, samo jedan offcanvas može biti prikazan u jednom trenutku.
Glavu gore! S obzirom na to kako CSS obrađuje animacije, ne možete koristiti margin
ili translate
na .offcanvas
elementu. Umjesto toga, koristite klasu kao neovisni element za omatanje.
prefers-reduced-motion
medijskom upitu. Pogledajte odjeljak
smanjenog kretanja u našoj dokumentaciji o pristupačnosti .
Primjeri
Offcanvas komponente
Ispod je primjer izvan platna koji je prikazan prema zadanim postavkama (putem .show
na .offcanvas
). Offcanvas uključuje podršku za zaglavlje s gumbom za zatvaranje i neobaveznu klasu tijela za neki početni padding
. Predlažemo da uključite offcanvas zaglavlja s radnjama odbacivanja kad god je to moguće ili pružite izričitu radnju odbacivanja.
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 uživo
Upotrijebite gumbe u nastavku za prikaz i skrivanje offcanvas elementa putem JavaScripta koji izmjenjuje .show
klasu na elementu s .offcanvas
klasom.
.offcanvas
skriva sadržaj (zadano).offcanvas.show
prikazuje sadržaj
Možete koristiti vezu s href
atributom ili gumb s data-bs-target
atributom. U oba slučaja data-bs-toggle="offcanvas"
potrebno je.
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>
Pomicanje tijela
Pomicanje <body>
elementa je onemogućeno kada su vidljivi offcanvas i njegova pozadina. Koristite data-bs-scroll
atribut da omogućite <body>
pomicanje.
Offcanvas s pomicanjem tijela
Pokušajte pomicati ostatak stranice kako biste vidjeli ovu opciju na djelu.
<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>
Pomicanje tijela i pozadina
Također možete omogućiti <body>
pomicanje s vidljivom pozadinom.
Pozadina s pomicanjem
Pokušajte pomicati ostatak stranice kako biste vidjeli ovu opciju na djelu.
<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čka pozadina
Kad je pozadina postavljena na statičnu, offcanvas se neće zatvoriti kada se klikne izvan 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>
Tamno van platna
Dodano u v5.2.0Promijenite izgled offcanvases pomoću uslužnih programa kako biste ih bolje uskladili s različitim kontekstima poput tamnih navigacijskih traka. Ovdje dodajemo .text-bg-dark
i .offcanvas
za pravilan stil s tamnim offcanvas-om .btn-close-white
. .btn-close
Ako unutar imate padajuće izbornike, razmislite o dodavanju .dropdown-menu-dark
u .dropdown-menu
.
Offcanvas
Ovdje postavite offcanvas sadržaj.
<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>
Uzvratni
Dodano u v5.2.0Responzivne offcanvas klase skrivaju sadržaj izvan okvira za prikaz od navedene prijelomne točke naniže. Iznad te prijelomne točke, sadržaj unutar će se ponašati kao i obično. Na primjer, .offcanvas-lg
skriva sadržaj u offcanvas ispod lg
prijelomne točke, ali prikazuje sadržaj iznad lg
prijelomne točke.
Responzivni offcanvas
Ovo je sadržaj unutar .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>
Responzivne offcanvas klase dostupne su za svaku prijelomnu točku.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
Plasman
Ne postoji zadani položaj za offcanvas komponente, pa morate dodati jednu od klasa modifikatora u nastavku.
.offcanvas-start
postavlja offcanvas s lijeve strane prozora (prikazano gore).offcanvas-end
postavlja offcanvas s desne strane prozora.offcanvas-top
postavlja offcanvas na vrh prozora.offcanvas-bottom
postavlja offcanvas na dno prozora
Isprobajte gornji, desni i donji primjer u nastavku.
Vrh od 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 od 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>
Pristupačnost
Budući da je panel offcanvas konceptualno modalni dijaloški okvir, svakako dodajte aria-labelledby="..."
—referenciranje naslova offcanvas-a u .offcanvas
. Imajte na umu da ne morate dodavati role="dialog"
jer ga već dodajemo putem JavaScripta.
CSS
Varijable
Dodano u v5.2.0Kao dio Bootstrapovog pristupa CSS varijablama koji se razvija, offcanvas sada koristi lokalne CSS varijable .offcanvas
za poboljšanu prilagodbu u stvarnom vremenu. Vrijednosti za CSS varijable postavljaju se putem Sass-a, tako da je i dalje podržana prilagodba Sass-a.
--#{$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 varijable
$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;
Korištenje
Dodatak offcanvas koristi nekoliko klasa i atributa za rukovanje teškim radom:
.offcanvas
skriva sadržaj.offcanvas.show
prikazuje sadržaj.offcanvas-start
skriva offcanvas s lijeve strane.offcanvas-end
skriva offcanvas s desne strane.offcanvas-top
skriva offcanvas na vrhu.offcanvas-bottom
skriva offcanvas na dnu
Dodajte gumb za odbacivanje s data-bs-dismiss="offcanvas"
atributom koji pokreće JavaScript funkciju. Obavezno koristite <button>
element s njim za ispravno ponašanje na svim uređajima.
Preko atributa podataka
Prebacivanje
Dodajte data-bs-toggle="offcanvas"
i data-bs-target
ili href
elementu da biste automatski dodijelili kontrolu nad jednim offcanvas elementom. Atribut data-bs-target
prihvaća CSS selektor na koji se primjenjuje offcanvas. Obavezno dodajte klasu offcanvas
u offcanvas element. Ako želite da se prema zadanim postavkama otvori, dodajte dodatnu klasu show
.
Odbaciti
Odbacivanje se može postići data
atributom na gumbu unutar platna kao što je prikazano u nastavku:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
ili na gumb izvan platna koristeći data-bs-target
kako je prikazano u nastavku:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
Preko JavaScripta
Omogućite ručno pomoću:
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
Mogućnosti
Kako se opcije mogu proslijediti putem atributa podataka ili JavaScripta, možete dodati naziv opcije u data-bs-
, kao u data-bs-animation="{value}"
. Obavezno promijenite vrstu velikih i malih slova naziva opcije iz “ camelCase ” u “ kebab-case ” kada prosljeđujete opcije putem atributa podataka. Na primjer, koristite data-bs-custom-class="beautifier"
umjesto data-bs-customClass="beautifier"
.
Od Bootstrapa 5.2.0, sve komponente podržavaju eksperimentalni atribut rezerviranih podataka data-bs-config
koji može sadržavati jednostavnu konfiguraciju komponente kao JSON niz. Kada element ima atribute data-bs-config='{"delay":0, "title":123}'
i data-bs-title="456"
, konačna title
vrijednost će biti 456
, a zasebni atributi podataka nadjačat će vrijednosti dane na data-bs-config
. Osim toga, postojeći atributi podataka mogu sadržavati JSON vrijednosti poput data-bs-delay='{"show":0,"hide":150}'
.
Ime | Tip | Zadano | Opis |
---|---|---|---|
backdrop |
booleov ili nizstatic |
true |
Nanesite pozadinu na tijelo dok je offcanvas otvoren. Alternativno, odredite static za pozadinu koja ne zatvara platno kada se klikne. |
keyboard |
Booleov | true |
Zatvara offcanvas kada se pritisne tipka za izlaz. |
scroll |
Booleov | false |
Dopusti pomicanje tijela dok je offcanvas otvoren. |
Metode
Asinkrone metode i prijelazi
Sve API metode su asinkrone i pokreću prijelaz . Vraćaju se pozivatelju čim prijelaz započne, ali prije nego što završi . Osim toga, poziv metode na prijelaznoj komponenti bit će zanemaren .
Pogledajte našu JavaScript dokumentaciju za više informacija .
Aktivira vaš sadržaj kao element izvan platna. Prihvaća izborne opcije object
.
Možete stvoriti offcanvas instancu s konstruktorom, na primjer:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
metoda | Opis |
---|---|
getInstance |
Statička metoda koja vam omogućuje da dobijete offcanvas instancu povezanu s DOM elementom. |
getOrCreateInstance |
Statička metoda koja vam omogućuje dobivanje offcanvas instance povezane s DOM elementom ili stvaranje nove u slučaju da nije inicijalizirana. |
hide |
Skriva element izvan platna. Vraća se pozivatelju prije nego što je offcanvas element zapravo skriven (tj. prije nego što se hidden.bs.offcanvas događaj dogodi). |
show |
Prikazuje element izvan platna. Vraća se pozivatelju prije nego što je offcanvas element stvarno prikazan (tj. prije nego što se shown.bs.offcanvas događaj dogodi). |
toggle |
Prebacuje element izvan platna na prikazan ili skriven. Vraća se pozivatelju prije nego što se offcanvas element stvarno prikaže ili sakrije (tj. prije nego što se dogodi događaj shown.bs.offcanvas ili ).hidden.bs.offcanvas |
Događaji
Bootstrapova klasa offcanvas izlaže nekoliko događaja za spajanje na offcanvas funkcionalnost.
Vrsta događaja | Opis |
---|---|
hide.bs.offcanvas |
Ovaj događaj se pokreće odmah nakon hide poziva metode. |
hidden.bs.offcanvas |
Ovaj se događaj pokreće kada je offcanvas element skriven od korisnika (pričekat će da se CSS prijelazi završe). |
hidePrevented.bs.offcanvas |
Ovaj se događaj pokreće kada se prikaže offcanvas, njegova pozadina je static i klik izvan offcanvasa se izvede. Događaj se također pokreće kada se pritisne tipka za izlaz i keyboard opcija je postavljena na false . |
show.bs.offcanvas |
Ovaj događaj aktivira se odmah kada show se pozove metoda instance. |
shown.bs.offcanvas |
Ovaj se događaj pokreće kada je element offcanvas učinjen vidljivim korisniku (pričekat će da se CSS prijelazi završe). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})