Zusammenbruch
Schalten Sie die Sichtbarkeit von Inhalten in Ihrem Projekt mit einigen Klassen und unseren JavaScript-Plugins um.
Wie es funktioniert
Das Kollaps-JavaScript-Plugin dient zum Ein- und Ausblenden von Inhalten. Schaltflächen oder Anker werden als Auslöser verwendet, die bestimmten Elementen zugeordnet sind, die Sie umschalten. Das Reduzieren eines Elements animiert das height
von seinem aktuellen Wert zu 0
. Angesichts der Art und Weise, wie CSS mit Animationen umgeht, können Sie sie nicht padding
für ein .collapse
Element verwenden. Verwenden Sie stattdessen die Klasse als unabhängiges Wrapping-Element.
prefers-reduced-motion
Medienanfrage. Weitere Informationen finden Sie im Abschnitt zur
reduzierten Bewegung in unserer Dokumentation zur Barrierefreiheit .
Beispiel
Klicken Sie auf die Schaltflächen unten, um ein anderes Element über Klassenänderungen ein- und auszublenden:
.collapse
Inhalte verbirgt.collapsing
wird während der Übergänge angewendet.collapse.show
zeigt Inhalt
Generell empfehlen wir die Verwendung einer Schaltfläche mit dem data-bs-target
Attribut. Obwohl semantisch nicht empfehlenswert, können Sie auch einen Link mit dem href
Attribut (und einem role="button"
) verwenden. In beiden Fällen ist das data-bs-toggle="collapse"
erforderlich.
<p>
<a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
Link with href
</a>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Button with data-bs-target
</button>
</p>
<div class="collapse" id="collapseExample">
<div class="card card-body">
Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
Horizontal
Das Kollaps-Plugin unterstützt auch das horizontale Kollabieren. Fügen Sie die Modifikatorklasse hinzu, um die anstelle von .collapse-horizontal
zu übergehen , und legen Sie a für das unmittelbar untergeordnete Element fest. Fühlen Sie sich frei, Ihren eigenen benutzerdefinierten Sass zu schreiben, Inline-Stile zu verwenden oder unsere Breiten-Dienstprogramme zu verwenden .width
height
width
min-height
Satz enthält, um übermäßige Neuzeichnungen in unseren Dokumenten zu vermeiden, dies jedoch nicht ausdrücklich erforderlich ist.
Nur das width
auf dem untergeordneten Element ist erforderlich.
<p>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseWidthExample" aria-expanded="false" aria-controls="collapseWidthExample">
Toggle width collapse
</button>
</p>
<div style="min-height: 120px;">
<div class="collapse collapse-horizontal" id="collapseWidthExample">
<div class="card card-body" style="width: 300px;">
This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
</div>
</div>
</div>
Mehrere Ziele
Ein <button>
or <a>
kann mehrere Elemente ein- und ausblenden, indem es sie mit einem Selektor in seinem href
or - data-bs-target
Attribut referenziert. Mehrere <button>
oder <a>
können ein Element ein- und ausblenden, wenn sie es jeweils mit ihrem href
or - data-bs-target
Attribut referenzieren
<p>
<a class="btn btn-primary" data-bs-toggle="collapse" href="#multiCollapseExample1" role="button" aria-expanded="false" aria-controls="multiCollapseExample1">Toggle first element</a>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#multiCollapseExample2" aria-expanded="false" aria-controls="multiCollapseExample2">Toggle second element</button>
<button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target=".multi-collapse" aria-expanded="false" aria-controls="multiCollapseExample1 multiCollapseExample2">Toggle both elements</button>
</p>
<div class="row">
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample1">
<div class="card card-body">
Some placeholder content for the first collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
</div>
<div class="col">
<div class="collapse multi-collapse" id="multiCollapseExample2">
<div class="card card-body">
Some placeholder content for the second collapse component of this multi-collapse example. This panel is hidden by default but revealed when the user activates the relevant trigger.
</div>
</div>
</div>
</div>
Barrierefreiheit
aria-expanded
Achten Sie darauf , das Steuerelement hinzuzufügen . Dieses Attribut übermittelt explizit den aktuellen Status des reduzierbaren Elements, das an das Steuerelement gebunden ist, an Bildschirmlesegeräte und ähnliche Hilfstechnologien. Wenn das reduzierbare Element standardmäßig geschlossen ist, sollte das Attribut des Steuerelements den Wert haben aria-expanded="false"
. Wenn Sie festgelegt haben, dass das reduzierbare Element mithilfe der show
Klasse standardmäßig geöffnet ist, legen Sie aria-expanded="true"
stattdessen das Steuerelement fest. Das Plug-in schaltet dieses Attribut auf dem Steuerelement automatisch um, je nachdem, ob das reduzierbare Element geöffnet oder geschlossen wurde (über JavaScript oder weil der Benutzer ein anderes Steuerelement ausgelöst hat, das ebenfalls mit demselben reduzierbaren Element verknüpft ist). Wenn das HTML-Element des Steuerelements keine Schaltfläche ist (z. B. ein <a>
oder <div>
), wird das Attributrole="button"
sollte dem Element hinzugefügt werden.
Wenn Ihr Steuerelement auf ein einzelnes reduzierbares Element abzielt – dh das data-bs-target
Attribut auf einen id
Selektor zeigt – sollten Sie das aria-controls
Attribut dem Steuerelement hinzufügen, das die id
des reduzierbaren Elements enthält. Moderne Screenreader und ähnliche Hilfstechnologien nutzen dieses Attribut, um Benutzern zusätzliche Verknüpfungen bereitzustellen, mit denen sie direkt zum reduzierbaren Element selbst navigieren können.
Beachten Sie, dass die aktuelle Implementierung von Bootstrap die verschiedenen optionalen Tastaturinteraktionen, die im Akkordeonmuster des ARIA Authoring Practices Guide beschrieben sind , nicht abdeckt – Sie müssen diese selbst mit benutzerdefiniertem JavaScript einbinden.
Sass
Variablen
$transition-collapse: height .35s ease;
$transition-collapse-width: width .35s ease;
Klassen
Collapse-Übergangsklassen sind in zu finden, scss/_transitions.scss
da diese von mehreren Komponenten (collapse und Accordion) gemeinsam genutzt werden.
.collapse {
&:not(.show) {
display: none;
}
}
.collapsing {
height: 0;
overflow: hidden;
@include transition($transition-collapse);
&.collapse-horizontal {
width: 0;
height: auto;
@include transition($transition-collapse-width);
}
}
Verwendungszweck
Das Kollaps-Plugin verwendet einige Klassen, um das schwere Heben zu bewältigen:
.collapse
verbirgt den Inhalt.collapse.show
zeigt den Inhalt.collapsing
wird hinzugefügt, wenn der Übergang beginnt, und entfernt, wenn er endet
Diese Klassen finden Sie in _transitions.scss
.
Über Datenattribute
Fügen Sie dem Element einfach data-bs-toggle="collapse"
und ein hinzu data-bs-target
, um automatisch die Steuerung eines oder mehrerer zusammenklappbarer Elemente zuzuweisen. Das data-bs-target
Attribut akzeptiert einen CSS-Selektor, auf den die Minimierung angewendet wird. Stellen Sie sicher, dass Sie die Klasse collapse
dem zusammenklappbaren Element hinzufügen. Wenn Sie möchten, dass es standardmäßig geöffnet ist, fügen Sie die zusätzliche Klasse hinzu show
.
Um einem zusammenklappbaren Bereich eine akkordeonartige Gruppenverwaltung hinzuzufügen, fügen Sie das Datenattribut hinzu data-bs-parent="#selector"
. Weitere Informationen finden Sie auf der Akkordeonseite .
Über JavaScript
Manuell aktivieren mit:
const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))
Optionen
Da Optionen über Datenattribute oder JavaScript übergeben werden können, können Sie einen Optionsnamen data-bs-
wie in anhängen data-bs-animation="{value}"
. Stellen Sie sicher, dass Sie den Falltyp des Optionsnamens von " camelCase " in " kebab -case " ändern, wenn Sie die Optionen über Datenattribute übergeben. Verwenden Sie beispielsweise data-bs-custom-class="beautifier"
anstelle von data-bs-customClass="beautifier"
.
Ab Bootstrap 5.2.0 unterstützen alle Komponenten ein experimentelles reserviertes Datenattribut, das eine data-bs-config
einfache Komponentenkonfiguration als JSON-String enthalten kann. Wenn ein Element über data-bs-config='{"delay":0, "title":123}'
und data-bs-title="456"
-Attribute verfügt, ist der endgültige title
Wert 456
und die separaten Datenattribute überschreiben die auf angegebenen Werte data-bs-config
. Darüber hinaus können vorhandene Datenattribute JSON-Werte wie data-bs-delay='{"show":0,"hide":150}'
.
Name | Typ | Standard | Beschreibung |
---|---|---|---|
parent |
Selektor, DOM-Element | null |
Wenn ein übergeordnetes Element angegeben ist, werden alle reduzierbaren Elemente unter dem angegebenen übergeordneten Element geschlossen, wenn dieses reduzierbare Element angezeigt wird. (ähnlich dem traditionellen Akkordeonverhalten - dies ist von der card Klasse abhängig). Das Attribut muss auf den zusammenklappbaren Zielbereich gesetzt werden. |
toggle |
boolesch | true |
Schaltet das reduzierbare Element beim Aufruf um. |
Methoden
Asynchrone Methoden und Übergänge
Alle API-Methoden sind asynchron und starten einen Übergang . Sie kehren zum Aufrufer zurück, sobald der Übergang gestartet wird, aber bevor er endet . Außerdem wird ein Methodenaufruf einer Übergangskomponente ignoriert .
Weitere Informationen finden Sie in unserer JavaScript-Dokumentation .
Aktiviert Ihren Inhalt als zusammenklappbares Element. Akzeptiert optionale Optionen object
.
Sie können eine Collapse-Instanz mit dem Konstruktor erstellen, zum Beispiel:
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
toggle: false
})
Methode | Beschreibung |
---|---|
dispose |
Zerstört den Kollaps eines Elements. (Entfernt gespeicherte Daten auf dem DOM-Element) |
getInstance |
Statische Methode, mit der Sie die mit einem DOM-Element verknüpfte Zusammenbruchsinstanz abrufen können. Sie können sie wie folgt verwenden: bootstrap.Collapse.getInstance(element) . |
getOrCreateInstance |
Statische Methode, die eine mit einem DOM-Element verknüpfte Collapse-Instanz zurückgibt oder eine neue erstellt, falls sie nicht initialisiert wurde. Sie können es wie folgt verwenden: bootstrap.Collapse.getOrCreateInstance(element) . |
hide |
Blendet ein zusammenklappbares Element aus. Gibt an den Aufrufer zurück, bevor das zusammenklappbare Element tatsächlich ausgeblendet wurde (z. B. bevor das hidden.bs.collapse Ereignis eintritt). |
show |
Zeigt ein zusammenklappbares Element. Gibt an den Aufrufer zurück, bevor das zusammenklappbare Element tatsächlich gezeigt wurde (z. B. bevor das shown.bs.collapse Ereignis eintritt). |
toggle |
Blendet ein reduzierbares Element ein oder aus. Gibt an den Aufrufer zurück, bevor das reduzierbare Element tatsächlich angezeigt oder ausgeblendet wurde (dh bevor das shown.bs.collapse or hidden.bs.collapse -Ereignis eintritt). |
Veranstaltungen
Die Collapse-Klasse von Bootstrap macht einige Ereignisse verfügbar, um sich in die Collapse-Funktionalität einzuklinken.
Ereignistyp | Beschreibung |
---|---|
hide.bs.collapse |
Dieses Ereignis wird sofort ausgelöst, wenn die hide Methode aufgerufen wurde. |
hidden.bs.collapse |
Dieses Ereignis wird ausgelöst, wenn ein Minimierungselement vor dem Benutzer ausgeblendet wurde (wartet, bis die CSS-Übergänge abgeschlossen sind). |
show.bs.collapse |
Dieses Ereignis wird sofort ausgelöst, wenn die show Instanzmethode aufgerufen wird. |
shown.bs.collapse |
Dieses Ereignis wird ausgelöst, wenn ein Minimierungselement für den Benutzer sichtbar gemacht wurde (wartet auf den Abschluss der CSS-Übergänge). |
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
// do something...
})