Off-canvas
Bouw verborgen zijbalken in uw project voor navigatie, winkelwagentjes en meer met een paar klassen en onze JavaScript-plug-in.
Hoe het werkt
Offcanvas is een zijbalkcomponent die via JavaScript kan worden weergegeven vanaf de linker-, rechter-, boven- of onderrand van de viewport. Knoppen of ankers worden gebruikt als triggers die zijn gekoppeld aan specifieke elementen die u inschakelt, en data
attributen worden gebruikt om ons JavaScript aan te roepen.
- Offcanvas deelt een deel van dezelfde JavaScript-code als modals. Conceptueel lijken ze veel op elkaar, maar het zijn afzonderlijke plug-ins.
- Evenzo worden sommige Sass -bronvariabelen voor de stijlen en dimensies van offcanvas overgenomen van de modale variabelen.
- Indien weergegeven, bevat offcanvas een standaardachtergrond waarop kan worden geklikt om de offcanvas te verbergen.
- Net als bij modals kan er slechts één offcanvas tegelijk worden weergegeven.
Kop op! Gezien de manier waarop CSS met animaties omgaat, kunt u geen margin
of translate
op een .offcanvas
element gebruiken. Gebruik in plaats daarvan de klasse als een onafhankelijk verpakkingselement.
prefers-reduced-motion
mediaquery. Zie het
gedeelte over beperkte beweging van onze toegankelijkheidsdocumentatie .
Voorbeelden
Offcanvas-componenten
Hieronder staat een offcanvas voorbeeld dat standaard getoond wordt (via .show
on .offcanvas
). Offcanvas biedt ondersteuning voor een header met een close-knop en een optionele body-klasse voor sommige initialen padding
. We raden u aan waar mogelijk offcanvas-headers op te nemen met afwijzingsacties, of een expliciete afwijzingsactie op te geven.
Off-canvas
<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 demonstratie
Gebruik de onderstaande knoppen om een offcanvas-element weer te geven en te verbergen via JavaScript dat de .show
klasse op een element met de .offcanvas
klasse schakelt.
.offcanvas
verbergt inhoud (standaard).offcanvas.show
toont inhoud
U kunt een link met het href
attribuut gebruiken, of een knop met het data-bs-target
attribuut. In beide gevallen data-bs-toggle="offcanvas"
is het verplicht.
Off-canvas
<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>
Lichaam scrollen
Scrollen door het <body>
element is uitgeschakeld wanneer een offcanvas en zijn achtergrond zichtbaar zijn. Gebruik het data-bs-scroll
attribuut om <body>
scrollen in te schakelen.
Offcanvas met body-scrolling
Probeer de rest van de pagina te scrollen om deze optie in actie te zien.
<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 scrollen en achtergrond
U kunt <body>
scrollen ook inschakelen met een zichtbare achtergrond.
Achtergrond met scrollen
Probeer de rest van de pagina te scrollen om deze optie in actie te zien.
<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>
Statische achtergrond
Als de achtergrond is ingesteld op statisch, zal het offcanvas niet sluiten als er buiten wordt geklikt.
Off-canvas
<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>
Donker offcanvas
Toegevoegd in v5.2.0Verander het uiterlijk van offcanvases met hulpprogramma's om ze beter af te stemmen op verschillende contexten, zoals donkere navigatiebalken. Hier voegen .text-bg-dark
we de .offcanvas
en .btn-close-white
aan toe .btn-close
voor een goede styling met een donker offcanvas. Als je dropdown-menu's hebt, overweeg dan ook om toe te voegen .dropdown-menu-dark
aan .dropdown-menu
.
Off-canvas
Plaats hier offcanvas-content.
<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>
Snel reagerend
Toegevoegd in v5.2.0Responsieve offcanvas-klassen verbergen inhoud buiten de viewport vanaf een opgegeven breekpunt en naar beneden. Boven dat breekpunt zal de inhoud zich normaal gedragen. Verbergt bijvoorbeeld .offcanvas-lg
inhoud in een offcanvas onder het lg
breekpunt, maar toont de inhoud boven het lg
breekpunt.
Responsieve offcanvas
Dit is inhoud binnen een .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>
Responsieve offcanvas-klassen zijn beschikbaar voor elk breekpunt.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
Plaatsing
Er is geen standaardplaatsing voor offcanvas-componenten, dus u moet een van de onderstaande modificatieklassen toevoegen.
.offcanvas-start
plaatst offcanvas aan de linkerkant van de viewport (hierboven weergegeven).offcanvas-end
plaatst offcanvas aan de rechterkant van de viewport.offcanvas-top
plaatst offcanvas op de bovenkant van de viewport.offcanvas-bottom
plaatst offcanvas onderaan de viewport
Probeer de voorbeelden bovenaan, rechts en onderaan hieronder.
Off-canvas 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>
Off-canvas rechts
<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 bodem
<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>
Toegankelijkheid
Aangezien het offcanvas-paneel conceptueel een modaal dialoogvenster is, moet u aria-labelledby="..."
—verwijzend naar de offcanvas-titel — toevoegen aan .offcanvas
. Merk op dat u niets hoeft toe te voegen role="dialog"
, omdat we het al toevoegen via JavaScript.
CSS
Variabelen
Toegevoegd in v5.2.0Als onderdeel van Bootstrap's evoluerende benadering van CSS-variabelen, gebruikt offcanvas nu lokale CSS .offcanvas
-variabelen voor verbeterde realtime aanpassingen. Waarden voor de CSS-variabelen worden ingesteld via Sass, dus Sass-aanpassing wordt ook nog steeds ondersteund.
--#{$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-variabelen
$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;
Gebruik
De offcanvas-plug-in gebruikt een paar klassen en attributen om het zware werk aan te kunnen:
.offcanvas
verbergt de inhoud.offcanvas.show
toont de inhoud.offcanvas-start
verbergt het offcanvas aan de linkerkant.offcanvas-end
verbergt het offcanvas aan de rechterkant.offcanvas-top
verbergt het offcanvas bovenaan.offcanvas-bottom
verbergt het offcanvas aan de onderkant
Voeg een afwijsknop toe met het data-bs-dismiss="offcanvas"
kenmerk, waarmee de JavaScript-functionaliteit wordt geactiveerd. Zorg ervoor dat u het <button>
element ermee gebruikt voor correct gedrag op alle apparaten.
Via gegevensattributen
Schakelaar
Voeg data-bs-toggle="offcanvas"
en een data-bs-target
of href
toe aan het element om automatisch de besturing van één offcanvas-element toe te wijzen. Het data-bs-target
attribuut accepteert een CSS-selector om het offcanvas op toe te passen. Zorg ervoor dat u de klasse toevoegt offcanvas
aan het offcanvas-element. Als u wilt dat deze standaard wordt geopend, voegt u de extra klasse toe show
.
Afwijzen
Ontslag kan worden bereikt met het data
kenmerk op een knop binnen het offcanvas , zoals hieronder wordt aangetoond:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
of op een knop buiten het offcanvas met behulp van de data-bs-target
onderstaande afbeelding:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
Via JavaScript
Handmatig inschakelen met:
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
Opties
Omdat opties kunnen worden doorgegeven via gegevensattributen of JavaScript, kunt u een optienaam toevoegen aan data-bs-
, zoals in data-bs-animation="{value}"
. Zorg ervoor dat u het kasttype van de optienaam wijzigt van " camelCase " in " kebab-case " wanneer u de opties doorgeeft via gegevensattributen. Gebruik bijvoorbeeld in data-bs-custom-class="beautifier"
plaats van data-bs-customClass="beautifier"
.
Vanaf Bootstrap 5.2.0 ondersteunen alle componenten een experimenteel gereserveerd gegevenskenmerk data-bs-config
dat een eenvoudige componentconfiguratie als een JSON-tekenreeks kan bevatten. Wanneer een element attributen heeft data-bs-config='{"delay":0, "title":123}'
, zal data-bs-title="456"
de uiteindelijke title
waarde zijn 456
en zullen de afzonderlijke gegevensattributen de waarden overschrijven die op data-bs-config
. Bovendien kunnen bestaande gegevensattributen JSON-waarden zoals data-bs-delay='{"show":0,"hide":150}'
.
Naam | Type | Standaard | Beschrijving |
---|---|---|---|
backdrop |
boolean of de stringstatic |
true |
Breng een achtergrond aan op het lichaam terwijl offcanvas open is. U kunt ook een achtergrond opgeven static die het offcanvas niet sluit wanneer erop wordt geklikt. |
keyboard |
booleaans | true |
Sluit de offcanvas wanneer de escape-toets wordt ingedrukt. |
scroll |
booleaans | false |
Sta body scrollen toe terwijl offcanvas open is. |
Methoden:
Asynchrone methoden en overgangen
Alle API-methoden zijn asynchroon en starten een transitie . Ze keren terug naar de beller zodra de overgang is gestart maar voordat deze eindigt . Bovendien wordt een methodeaanroep op een overgangscomponent genegeerd .
Activeert uw inhoud als een offcanvas-element. Accepteert een optionele optie object
.
U kunt een offcanvas-instantie maken met de constructor, bijvoorbeeld:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
Methode | Beschrijving |
---|---|
getInstance |
Statische methode waarmee u de offcanvas-instantie kunt koppelen aan een DOM-element. |
getOrCreateInstance |
Statische methode waarmee u de offcanvas-instantie kunt koppelen aan een DOM-element, of een nieuwe kunt maken voor het geval deze niet is geïnitialiseerd. |
hide |
Verbergt een offcanvas-element. Keert terug naar de aanroeper voordat het offcanvas-element daadwerkelijk is verborgen (dwz voordat de hidden.bs.offcanvas gebeurtenis plaatsvindt). |
show |
Toont een offcanvas-element. Keert terug naar de aanroeper voordat het offcanvas-element daadwerkelijk is getoond (dwz voordat de shown.bs.offcanvas gebeurtenis plaatsvindt). |
toggle |
Schakelt een offcanvas-element om naar weergegeven of verborgen. Keert terug naar de aanroeper voordat het offcanvas-element daadwerkelijk is getoond of verborgen (dwz voordat de shown.bs.offcanvas of - hidden.bs.offcanvas gebeurtenis plaatsvindt). |
Evenementen
De offcanvas-klasse van Bootstrap onthult een paar gebeurtenissen voor het aansluiten op offcanvas-functionaliteit.
Evenementtype | Beschrijving |
---|---|
hide.bs.offcanvas |
Deze gebeurtenis wordt onmiddellijk geactiveerd wanneer de hide methode is aangeroepen. |
hidden.bs.offcanvas |
Deze gebeurtenis wordt geactiveerd wanneer een offcanvas-element is verborgen voor de gebruiker (wacht tot de CSS-overgangen zijn voltooid). |
hidePrevented.bs.offcanvas |
Deze gebeurtenis wordt geactiveerd wanneer het offcanvas wordt weergegeven, de achtergrond is static en een klik buiten het offcanvas wordt uitgevoerd. De gebeurtenis wordt ook geactiveerd wanneer de escape-toets wordt ingedrukt en de keyboard optie is ingesteld op false . |
show.bs.offcanvas |
Deze gebeurtenis wordt onmiddellijk geactiveerd wanneer de show instantiemethode wordt aangeroepen. |
shown.bs.offcanvas |
Deze gebeurtenis wordt geactiveerd wanneer een offcanvas-element zichtbaar is gemaakt voor de gebruiker (wacht tot de CSS-overgangen zijn voltooid). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})