Offcanvas
Custruite barre laterali nascosti in u vostru prughjettu per a navigazione, shopping carts, è più cù uni pochi di classi è u nostru plugin JavaScript.
Cumu travaglia
Offcanvas hè un cumpunente di a barra laterale chì pò esse cambiatu via JavaScript per apparisce da u latu left, right, top, or bottom di a finestra. I buttoni o l'ancore sò usati cum'è attivatori chì sò attaccati à elementi specifichi chì toggle, è l' data
attributi sò usati per invucà u nostru JavaScript.
- Offcanvas sparte un pocu di u listessu codice JavaScript cum'è modali. Conceptually, sò abbastanza simili, ma sò plugins separati.
- In listessu modu, alcune variabili Sass fonte per i stili è e dimensioni di offcanvas sò ereditati da e variàbili di u modale.
- Quandu si mostra, offcanvas include un sfondate predeterminatu chì pò esse clicatu per ammuccià l'offcanvas.
- Simile à i modali, solu un offcanvas pò esse mostratu à tempu.
A testa alta ! Data cumu CSS gestisce l'animazioni, ùn pudete micca aduprà margin
o translate
nantu à un .offcanvas
elementu. Invece, aduprate a classa cum'è un elementu di imballaggio indipendente.
prefers-reduced-motion
media query. Vede a
sezione di movimentu ridottu di a nostra documentazione d'accessibilità .
Esempii
Cumpunenti offcanvas
Quì sottu hè un esempiu offcanvas chì hè mostratu per difettu (via .show
on .offcanvas
). Offcanvas include supportu per un header cù un buttone chjusu è una classa di corpu opzionale per qualchì iniziale padding
. Suggeremu d'include intestazioni offcanvas cù azioni di licenzià ogni volta chì hè pussibule, o furnisce una azione esplicita di licenzià.
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 live
Aduprate i buttoni sottu per vede è ammuccià un elementu offcanvas via JavaScript chì cambia a .show
classa nantu à un elementu cù a .offcanvas
classe.
.offcanvas
oculta u cuntenutu (predeterminatu).offcanvas.show
mostra u cuntenutu
Pudete aduprà un ligame cù l' href
attributu, o un buttone cù l' data-bs-target
attributu. In i dui casi, data-bs-toggle="offcanvas"
hè necessariu.
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>
Scrolling di u corpu
U scorrimentu di l' <body>
elementu hè disattivatu quandu un offcanvas è u so fondu sò visibili. Aduprà l' data-bs-scroll
attributu per attivà u <body>
scrolling.
Offcanvas cù scorrimentu di corpu
Pruvate scrolling u restu di a pagina per vede sta opzione in azzione.
<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>
Scrolling di u corpu è u fondu
Pudete ancu attivà <body>
u scrolling cù un sfondate visibile.
Fondu cù scrolling
Pruvate scrolling u restu di a pagina per vede sta opzione in azzione.
<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>
Fondu staticu
Quandu u sfondate hè stallatu in static, l'offcanvas ùn si chjude micca quandu fate un clic fora di ellu.
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>
Offcanvas scuru
Aggiuntu in v5.2.0Cambia l'aspettu di l'offcanvases cù l'utilità per cunfurmà megliu cù diversi cuntesti cum'è navbars scuri. Quì aghjustemu .text-bg-dark
à u .offcanvas
è .btn-close-white
à .btn-close
per un stilu propiu cù un offcanvas scuru. Sì avete menu dropdowns, cunzidira ancu aghjunghje .dropdown-menu-dark
à .dropdown-menu
.
Offcanvas
Mettite u cuntenutu offcanvas quì.
<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>
Risposta
Aggiuntu in v5.2.0E classi offcanvas responsive ocultanu u cuntenutu fora di a finestra di vista da un puntu di rottura specificatu è in giù. Sopra à quellu puntu di ruptura, u cuntenutu di l'internu si comporta cum'è di solitu. Per esempiu, .offcanvas-lg
oculta u cuntenutu in un offcanvas sottu à u lg
breakpoint, ma mostra u cuntenutu sopra à u lg
breakpoint.
Risposta offcanvas
Questu hè cuntenutu in un .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>
E classi offcanvas responsive sò dispunibuli per ogni breakpoint.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
Placement
Ùn ci hè micca un locu predeterminatu per i cumpunenti offcanvas, cusì duvete aghjunghje una di e classi modificatori sottu.
.offcanvas-start
mette fora di tela à a manca di a finestra (mostra sopra).offcanvas-end
mette offcanvas à a diritta di u viewport.offcanvas-top
mette offcanvas in cima di u viewport.offcanvas-bottom
mette offcanvas in u fondu di u viewport
Pruvate l'esempii in cima, destra è sottu sottu.
Top 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 ghjustu
<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>
Offcanvas fondu
<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>
L'accessibilità
Siccomu u pannellu offcanvas hè cuncettualmente un dialogu modale, assicuratevi di aghjunghje aria-labelledby="..."
- in riferimentu à u titulu offcanvas - à .offcanvas
. Nota chì ùn avete micca bisognu di aghjunghje role="dialog"
postu chì l'avemu digià aghjustatu via JavaScript.
CSS
Variabili
Aggiuntu in v5.2.0Comu parte di l'approcciu di variabili CSS in evoluzione di Bootstrap, offcanvas usa avà variabili CSS lucali .offcanvas
per una persunalizazione rinfurzata in tempu reale. I valori per e variabili CSS sò stabiliti via Sass, cusì a persunalizazione di Sass hè ancu supportata.
--#{$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};
Variabili 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;
Usu
U plugin offcanvas utilizeghja uni pochi di classi è attributi per trattà u pesu pesante:
.offcanvas
oculta u cuntenutu.offcanvas.show
mostra u cuntenutu.offcanvas-start
nasconde l'offcanvas a sinistra.offcanvas-end
nasconde l'offcanvas a destra.offcanvas-top
nasconde l'offcanvas in cima.offcanvas-bottom
nasconde l'offcanvas in u fondu
Aghjunghjite un buttone di scartà cù l' data-bs-dismiss="offcanvas"
attributu, chì attiva a funziunalità JavaScript. Assicuratevi di utilizà l' <button>
elementu cun ellu per un cumpurtamentu propiu in tutti i dispositi.
Via attributi di dati
Toggle
Aghjunghjite data-bs-toggle="offcanvas"
è a data-bs-target
o href
à l'elementu per assignà automaticamente u cuntrollu di un elementu offcanvas. L' data-bs-target
attributu accetta un selettore CSS per applicà l'offcanvas. Assicuratevi di aghjunghje a classa offcanvas
à l'elementu offcanvas. Se vulete chì l'apertura predefinita, aghjunghje a classa supplementaria show
.
Licenziate
U licenziamentu pò esse ottenutu cù l' data
attributu nantu à un buttone in l'offcanvas cum'è dimustratu quì sottu:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
o nantu à un buttone fora di l'offcanvas usendu u data-bs-target
cum'è dimustratu quì sottu:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
Via JavaScript
Abilita manualmente cù:
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
Opzioni
Siccomu l'opzioni ponu esse passati via attributi di dati o JavaScript, pudete appiccicà un nome d'opzione à data-bs-
, cum'è in data-bs-animation="{value}"
. Assicuratevi di cambià u tipu di casu di u nome di l'opzione da " camelCase " à " kebab-case " quandu passanu l'opzioni via attributi di dati. Per esempiu, aduprà data-bs-custom-class="beautifier"
invece di data-bs-customClass="beautifier"
.
A partire da Bootstrap 5.2.0, tutti i cumpunenti supportanu un attributu di dati riservatu sperimentaledata-bs-config
chì pò accoglie cunfigurazione di cumpunenti simplice cum'è una stringa JSON. Quandu un elementu hà data-bs-config='{"delay":0, "title":123}'
è data-bs-title="456"
attributi, u valore finali title
serà 456
è l'attributi di dati separati annullaranu i valori dati nantu à data-bs-config
. Inoltre, l'attributi di dati esistenti sò capaci di allughjà valori JSON cum'è data-bs-delay='{"show":0,"hide":150}'
.
Nome | Tipu | Default | Descrizzione |
---|---|---|---|
backdrop |
boolean o a stringastatic |
true |
Applica un sfondate nantu à u corpu mentre offcanvas hè apertu. In alternativa, specificate static per un sfondate chì ùn chjude micca u offcanvas quandu cliccate. |
keyboard |
booleanu | true |
Chiude l'offcanvas quandu si preme a chjave di escape. |
scroll |
booleanu | false |
Permette u scorrimentu di u corpu mentre offcanvas hè apertu. |
I metudi
Metudi asincroni è transizioni
Tutti i metudi API sò asincroni è cumincianu una transizione . Ritornanu à u chjamante appena a transizione hè iniziata, ma prima chì finisce . Inoltre, un metudu chjamatu nantu à un cumpunente di transizione serà ignoratu .
Vede a nostra documentazione JavaScript per più infurmazione .
Attiva u vostru cuntenutu cum'è un elementu offcanvas. Accetta opzioni opzionali object
.
Pudete creà una istanza offcanvas cù u custruttore, per esempiu:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
Metudu | Descrizzione |
---|---|
getInstance |
Metudu staticu chì permette di ottene l'istanza offcanvas assuciata à un elementu DOM. |
getOrCreateInstance |
Metudu staticu chì permette di ottene l'istanza offcanvas assuciata à un elementu DOM, o creanu un novu in casu ùn hè micca inizializatu. |
hide |
Nasconde un elementu offcanvas. Ritorna à u chjamante prima chì l'elementu offcanvas hè statu oculatu (vale à dì prima chì l' hidden.bs.offcanvas avvenimentu si faci). |
show |
Mostra un elementu offcanvas. Ritorna à u chjamante prima chì l'elementu offcanvas hè statu veramente mostratu (vale à dì prima chì l' shown.bs.offcanvas avvenimentu si faci). |
toggle |
Commuta un elementu offcanvas per mostratu o oculatu. Ritorna à u chjamante prima chì l'elementu offcanvas hè statu effettivamente mostratu o oculatu (vale à dì prima chì l' avvenimentu shown.bs.offcanvas o hidden.bs.offcanvas si faci). |
Avvenimenti
A classe offcanvas di Bootstrap espone uni pochi di avvenimenti per attaccà à a funziunalità offcanvas.
Tipu di avvenimentu | Descrizzione |
---|---|
hide.bs.offcanvas |
Stu avvenimentu hè sparatu immediatamente quandu u hide metudu hè statu chjamatu. |
hidden.bs.offcanvas |
Questu avvenimentu hè sparatu quandu un elementu offcanvas hè statu oculatu da l'utilizatore (aspetterà chì e transizioni CSS finiscinu). |
hidePrevented.bs.offcanvas |
Questu avvenimentu hè sparatu quandu l'offcanvas hè mostratu, u so sfondate hè static è un clic fora di l'offcanvas hè realizatu. L'avvenimentu hè ancu sparatu quandu a chjave di escape hè pressata è l' keyboard opzione hè impostata à false . |
show.bs.offcanvas |
Questu avvenimentu spara immediatamente quandu u show metudu di istanza hè chjamatu. |
shown.bs.offcanvas |
Questu avvenimentu hè sparatu quandu un elementu offcanvas hè statu resu visibile à l'utilizatore (aspetterà chì e transizioni CSS finiscinu). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})