Offcanvas
Baut verstoppte Sidebaren an Ärem Projet fir Navigatioun, Shopping Weenchen, a méi mat e puer Klassen an eisem JavaScript Plugin.
Wéi et funktionnéiert
Offcanvas ass e Sidebar Komponent deen iwwer JavaScript geschalt ka ginn fir vu lénks, riets, uewen oder ënnen vum Viewport ze erschéngen. Knäppercher oder Anker ginn als Ausléiser benotzt, déi un spezifesch Elementer befestegt sinn, déi Dir wiesselt, an data
Attributer gi benotzt fir eis JavaScript opzeruffen.
- Offcanvas deelt e puer vum selwechte JavaScript Code wéi Modal. Konzeptuell si se ganz ähnlech, awer si sinn separat Plugins.
- Ähnlech sinn e puer Quell Sass Variablen fir Offcanvas Stiler an Dimensiounen aus de Modal Variablen ierflecher.
- Wann et ugewise gëtt, enthält Offcanvas e Standard Kuliss, deen geklickt ka ginn fir den Offcanvas ze verstoppen.
- Ähnlech wéi Modale kann nëmmen een Offcanvas gläichzäiteg gewisen ginn.
Kapp erop! Gitt wéi CSS Animatiounen handhabt, kënnt Dir net benotzen margin
oder translate
op engem .offcanvas
Element. Amplaz benotzt d'Klass als onofhängeg Wrapelement.
prefers-reduced-motion
Medienufro of. Kuckt d'
Reduktiounsbewegungssektioun vun eiser Accessibilitéitsdokumentatioun .
Beispiller
Offcanvas Komponenten
Drënner ass en Offcanvas Beispill dat als Standard ugewise gëtt (iwwer .show
op .offcanvas
). Offcanvas enthält Ënnerstëtzung fir en Header mat engem Zoumaache Knäppchen an eng optional Kierperklass fir e puer initial padding
. Mir proposéieren datt Dir Offcanvas Header mat Entloossaktiounen abegraff wa méiglech, oder eng explizit Entloossaktioun ubitt.
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>
Live Demo
Benotzt d'Knäppercher hei ënnen fir en Offcanvas Element iwwer JavaScript ze weisen an ze verstoppen, deen d' .show
Klass op en Element mat der .offcanvas
Klass wiesselt.
.offcanvas
verstoppt Inhalt (Standard).offcanvas.show
weist Inhalt
Dir kënnt e Link mat dem href
Attribut benotzen, oder e Knäppchen mam data-bs-target
Attribut. A béide Fäll data-bs-toggle="offcanvas"
ass et néideg.
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>
Kierper scrollen
D'Scrolling vum <body>
Element ass behënnert wann en Offcanvas a seng Kuliss siichtbar sinn. Benotzt den data-bs-scroll
Attribut fir <body>
Scrollen z'aktivéieren.
Offcanvas mat Kierper Scrollen
Probéiert de Rescht vun der Säit ze scrollen fir dës Optioun an Aktioun ze gesinn.
<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>
Kierper scrollen an Kuliss
Dir kënnt och <body>
Scrollen mat engem sichtbare Kuliss aktivéieren.
Kuliss mat Scrollen
Probéiert de Rescht vun der Säit ze scrollen fir dës Optioun an Aktioun ze gesinn.
<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>
Statesch Kuliss
Wann den Hannergrond op statesch gesat ass, gëtt den Offcanvas net zou wann Dir dobausse klickt.
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>
Däischter Offcanvas
Dobäi an v5.2.0Ännert d'Erscheinung vun Offcanvasen mat Utilities fir se besser mat verschiddene Kontexter wéi donkel Navbars ze passen. Hei fügen .text-bg-dark
mir der .offcanvas
an .btn-close-white
fir .btn-close
richteg Styling mat engem donkelen Offcanvas. Wann Dir Dropdowns bannent hutt, betruecht och derbäi .dropdown-menu-dark
ze .dropdown-menu
.
Offcanvas
Plaz offcanvas Inhalt hei.
<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>
Reaktiounsfäeger
Dobäi an v5.2.0Reaktiounsfäeger Offcanvas Klassen verstoppen Inhalt ausserhalb vum Viewport vun engem spezifizéierte Breakpoint an erof. Iwwert deem Breakpoint wäert den Inhalt dobannen sech wéi gewinnt behuelen. Zum Beispill .offcanvas-lg
verstoppt Inhalt an engem Offcanvas ënner dem lg
Breakpoint, awer weist den Inhalt iwwer dem lg
Breakpoint.
Reaktiounsfäeger offcanvas
Dëst ass Inhalt an engem .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>
Reaktiounsfäeger Offcanvas Klassen sinn iwwer all Breakpoint verfügbar.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
Placement
Et gëtt keng Standardplazéierung fir Offcanvas Komponenten, also musst Dir eng vun de Modifizéierungsklassen hei drënner addéieren.
.offcanvas-start
plazéiert Offcanvas op der lénker Säit vum Viewport (uewe gewisen).offcanvas-end
Plazen offcanvas op der rietser Säit vun der viewport.offcanvas-top
plazéiert offcanvas op der Spëtzt vum Viewport.offcanvas-bottom
Plazen offcanvas um ënnen vun der viewport
Probéiert déi iewescht, riets an ënnen Beispiller hei ënnen.
Offcanvas Top
<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 richteg
<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 ënnen
<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>
Accessibilitéit
Zënter datt d'Offcanvas Panel konzeptuell e modalen Dialog ass, gitt sécher ze addéieren aria-labelledby="..."
- mam Referenz op den Offcanvas Titel - op .offcanvas
. Notéiert datt Dir net braucht derbäi ze ginn role="dialog"
well mir et scho iwwer JavaScript addéieren.
CSS
Variablen
Dobäi an v5.2.0Als Deel vun der Entwécklung vu Bootstrap CSS Variablen Approche, offcanvas benotzt elo lokal CSS Variablen op .offcanvas
fir eng verstäerkte Echtzäit Personnalisatioun. Wäerter fir d'CSS Variablen ginn iwwer Sass gesat, sou datt Sass Personnalisatioun och nach ëmmer ënnerstëtzt gëtt.
--#{$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 Variablen
$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;
Benotzung
Den Offcanvas Plugin benotzt e puer Klassen an Attributer fir déi schwéier Lift ze handhaben:
.offcanvas
verstoppt den Inhalt.offcanvas.show
weist den Inhalt.offcanvas-start
verstoppt den Offcanvas lénks.offcanvas-end
verstoppt den Offcanvas riets.offcanvas-top
verstoppt den Offcanvas uewen.offcanvas-bottom
verstoppt den Offcanvas ënnen
Füügt en Entlooss Knäppchen mat dem data-bs-dismiss="offcanvas"
Attribut, deen d'JavaScript Funktionalitéit ausléist. Vergewëssert Iech d' <button>
Element domat ze benotzen fir entspriechend Verhalen iwwer all Apparater.
Duerch Daten Attributer
Toggle
Füügt data-bs-toggle="offcanvas"
an en data-bs-target
oder href
zum Element fir automatesch d'Kontroll vun engem Offcanvas-Element ze ginn. D' data-bs-target
Attribut akzeptéiert en CSS Selektor fir den Offcanvas opzemaachen. Gitt sécher d'Klass offcanvas
op d'Offcanvas Element ze addéieren. Wann Dir wëllt datt et als Standard opmaacht, füügt déi zousätzlech Klass show
.
Entlooss
Entloossung ka mam data
Attribut op engem Knäpp am Offcanvas erreecht ginn wéi hei ënnen gewisen:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
oder op engem Knäppchen ausserhalb vum Offcanvas benotzt de data-bs-target
wéi hei ënnen gewisen:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
Iwwer JavaScript
Aktivéiert manuell mat:
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
Optiounen
Wéi Optiounen kënnen iwwer Dateattributer oder JavaScript weidergeleet ginn, kënnt Dir en Optiounsnumm op data-bs-
, wéi an data-bs-animation="{value}"
. Vergewëssert Iech de Falltyp vum Optiounsnumm vun " camelCase " op " Kebab-Case " z'änneren wann Dir d'Optiounen iwwer Datenattributer passéiert. Zum Beispill benotzt data-bs-custom-class="beautifier"
amplaz data-bs-customClass="beautifier"
.
Zënter Bootstrap 5.2.0 ënnerstëtzen all Komponenten en experimentellen reservéierten Dateattribut, data-bs-config
deen eng einfach Komponentkonfiguratioun als JSON-String kann ënnerhuelen. Wann en Element data-bs-config='{"delay":0, "title":123}'
an data-bs-title="456"
Attributer huet, gëtt de Finale title
Wäert 456
an déi getrennten Dateattributter iwwerschreiden Wäerter, déi op data-bs-config
. Zousätzlech kënnen existent Datenattributer JSON Wäerter wéi data-bs-delay='{"show":0,"hide":150}'
.
Numm | Typ | Default | Beschreiwung |
---|---|---|---|
backdrop |
boolesch oder de Stringstatic |
true |
Fëllt en Kuliss op de Kierper wärend Offcanvas op ass. Alternativ spezifizéiert static fir eng Kuliss déi den Offcanvas net zoumaacht wann Dir klickt. |
keyboard |
boolesch | true |
Maacht den Offcanvas zou wann d'Escape-Tast gedréckt gëtt. |
scroll |
boolesch | false |
Erlaabt Kierper scrollen wärend Offcanvas op ass. |
Methoden
Asynchron Methoden an Iwwergäng
All API Methoden sinn asynchron a starten en Iwwergang . Si ginn zréck op den Uruffer soubal den Iwwergang ugefaang ass, awer ier en eriwwer ass . Zousätzlech gëtt e Methodruff op eng Iwwergangskomponent ignoréiert .
Aktivéiert Ären Inhalt als Offcanvas Element. Akzeptéiert eng fakultativ Optiounen object
.
Dir kënnt eng Offcanvas Instanz mam Konstruktor erstellen, zum Beispill:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
Method | Beschreiwung |
---|---|
getInstance |
Statesch Method déi Iech erlaabt d'Offcanvas Instanz mat engem DOM Element assoziéiert ze kréien. |
getOrCreateInstance |
Statesch Method déi Iech erlaabt d'Offcanvas Instanz mat engem DOM Element assoziéiert ze kréien, oder eng nei ze kreéieren am Fall wou se net initialiséiert gouf. |
hide |
Verstoppt en Offcanvas Element. Gitt zréck op den Uruffer ier den Offcanvas-Element tatsächlech verstoppt gouf (dh ier d' hidden.bs.offcanvas Evenement geschitt ass). |
show |
Weist en Offcanvas Element. Gitt zréck op den Uruffer ier den Offcanvas-Element tatsächlech gewisen gouf (dh ier d' shown.bs.offcanvas Evenement geschitt ass). |
toggle |
Wiesselt en Offcanvas Element fir ze weisen oder ze verstoppen. Gitt zréck op den Uruffer ier den Offcanvas-Element tatsächlech gewisen oder verstoppt goufshown.bs.offcanvas ( dh ier den hidden.bs.offcanvas Event geschitt ass). |
Evenementer
Bootstrap's Offcanvas Klass weist e puer Eventer aus fir an Offcanvas Funktionalitéit ze hooken.
Event Typ | Beschreiwung |
---|---|
hide.bs.offcanvas |
Dëst Evenement gëtt direkt gebrannt wann d' hide Method genannt gouf. |
hidden.bs.offcanvas |
Dëst Evenement gëtt ausgeléist wann en Offcanvas Element vum Benotzer verstoppt ass (waart op CSS Iwwergäng fir fäerdeg ze maachen). |
hidePrevented.bs.offcanvas |
Dëst Evenement gëtt ausgeléist wann den Offcanvas gewise gëtt, seng Kuliss ass static an e Klick ausserhalb vum Offcanvas gëtt gemaach. D'Evenement gëtt och gebrannt wann de Fluchtschlëssel gedréckt gëtt an d' keyboard Optioun op gesat gëtt false . |
show.bs.offcanvas |
Dëst Event brennt direkt wann d' show Instanzmethod genannt gëtt. |
shown.bs.offcanvas |
Dëst Evenement gëtt ausgeléist wann en Offcanvas Element fir de Benotzer siichtbar gemaach gouf (waart op CSS Iwwergäng fir fäerdeg ze maachen). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})