Összeomlás
Néhány osztállyal és JavaScript beépülő moduljainkkal átkapcsolhatja a tartalom láthatóságát a projektben.
Hogyan működik
Az összecsukható JavaScript beépülő modul a tartalom megjelenítésére és elrejtésére szolgál. A gombok vagy horgonyok triggerekként használatosak, amelyek a váltott elemekhez vannak leképezve. Egy elem összecsukásakor az heightaktuális értékről a -ra animálja 0. Tekintettel arra, hogy a CSS hogyan kezeli az animációkat, nem használható paddingelemeken .collapse. Ehelyett használja az osztályt független burkolóelemként.
prefers-reduced-motion. Tekintse
meg akadálymentesítési dokumentációnk csökkentett mozgással foglalkozó részét .
Példa
Kattintson az alábbi gombokra egy másik elem megjelenítéséhez és elrejtéséhez osztálymódosításokon keresztül:
.collapsetartalmat rejt.collapsingátmenetek során alkalmazzák.collapse.showtartalmat mutat
data-bs-targetÁltalában az attribútummal rendelkező gomb használatát javasoljuk . Bár szemantikai szempontból nem ajánlott, az hrefattribútummal (és egy role="button") hivatkozást is használhat. Mindkét esetben data-bs-toggle="collapse"kötelező.
<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>
Vízszintes
Az összecsukás plugin támogatja a vízszintes összecsukást is. Adja hozzá a .collapse-horizontalmódosító osztályt a widthhelyett, heightés állítsa widthbe a közvetlen gyermekelemet. Nyugodtan írhat saját egyéni Sass-t, használhat belső stílusokat, vagy használja szélességű segédprogramjainkat .
min-heightkészletet a túlzott újrafestések elkerülésére a dokumentumainkban, ez nem kifejezetten kötelező.
Csak az widthon the child elem szükséges.
<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>
Több célpont
A <button>vagy <a>több elemet is megjeleníthet és elrejthet, ha hivatkozik rájuk a hrefvagy data-bs-targetattribútumában található választóval. Több <button>vagy <a>megjeleníthet és elrejthet egy elemet, ha mindegyik a hrefvagy data-bs-targetattribútummal hivatkozik rá
<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>
Megközelíthetőség
Feltétlenül adja hozzá aria-expandeda vezérlőelemet. Ez az attribútum kifejezetten közvetíti a vezérlőhöz kapcsolódó összecsukható elem aktuális állapotát a képernyőolvasóknak és a hasonló kisegítő technológiáknak. Ha az összecsukható elem alapértelmezés szerint be van zárva, akkor a vezérlőelem attribútumának értékűnek kell lennie aria-expanded="false". Ha az összecsukható elemet alapértelmezés szerint nyitottnak állította be az showosztály használatával, aria-expanded="true"akkor inkább a vezérlőn állítsa be. A beépülő modul automatikusan átkapcsolja ezt az attribútumot a vezérlőn attól függően, hogy az összecsukható elemet megnyitották-e vagy bezárták-e (JavaScripten keresztül, vagy azért, mert a felhasználó egy másik, ugyanahhoz az összecsukható elemhez kötött vezérlőelemet váltott ki). Ha a vezérlőelem HTML-eleme nem gomb (pl. egy <a>vagy <div>), akkor az attribútumrole="button"hozzá kell adni az elemhez.
Ha a vezérlőelem egyetlen összecsukható elemet céloz meg – azaz az data-bs-targetattribútum egy idszelektorra mutat –, akkor az attribútumot hozzá kell adni az összecsukható elemet aria-controlstartalmazó vezérlőelemhez . idA modern képernyőolvasók és a hasonló kisegítő technológiák ezt az attribútumot használják fel, hogy további parancsikonokat biztosítsanak a felhasználóknak, amelyekkel közvetlenül az összecsukható elemhez navigálhatnak.
Ne feledje, hogy a Bootstrap jelenlegi megvalósítása nem fedi le az ARIA Authoring Practices Guide harmonikamintában leírt különféle választható billentyűzet-interakciókat – ezeket Önnek kell beépítenie az egyéni JavaScriptbe.
Sass
Változók
$transition-collapse: height .35s ease;
$transition-collapse-width: width .35s ease;
osztályok
Összecsukási átmeneti osztályok találhatók, scss/_transitions.scssmivel ezek több összetevő között vannak megosztva (összecsukás és harmonika).
.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);
}
}
Használat
A collapse plugin néhány osztályt használ a nehéz emelés kezelésére:
.collapseelrejti a tartalmat.collapse.showmutatja a tartalmat.collapsinghozzáadódik az átmenet megkezdésekor, és eltávolítja, amikor befejeződik
Ezek az osztályok itt találhatók _transitions.scss.
Adatattribútumokon keresztül
Csak adja hozzá az elemet data-bs-toggle="collapse"és egy data-bs-targetelemet, hogy automatikusan hozzárendelje egy vagy több összecsukható elem vezérlését. Az data-bs-targetattribútum elfogad egy CSS-választót az összecsukás alkalmazásához. Feltétlenül adja hozzá az osztályt collapseaz összecsukható elemhez. Ha azt szeretné, hogy alapértelmezetten megnyíljon, adja hozzá a további osztályt show.
Ha harmonikaszerű csoportkezelést szeretne hozzáadni egy összecsukható területhez, adja hozzá a data attribútumot data-bs-parent="#selector". További információért lásd a harmonika oldalt .
JavaScripten keresztül
Manuális engedélyezés a következőkkel:
const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))
Lehetőségek
Mivel az opciók átadhatók adatattribútumokon vagy JavaScript-en keresztül, hozzáfűzhet egy beállításnevet a -hoz data-bs-, mint például a data-bs-animation="{value}". Ügyeljen arra, hogy az opció nevének esettípusát „ camelCase ”-ról „ kebab-case ”-re változtassa, amikor a beállításokat adatattribútumokon keresztül adja át. Például használja data-bs-custom-class="beautifier"a helyett data-bs-customClass="beautifier".
A Bootstrap 5.2.0-tól kezdve minden összetevő támogatja a kísérleti fenntartott adatattribútumot, data-bs-configamely JSON-karakterláncként tartalmazhat egyszerű összetevőkonfigurációt. Ha egy elemnek data-bs-config='{"delay":0, "title":123}'és data-bs-title="456"attribútumai vannak, a végső titleérték a következő lesz, 456és a különálló adatattribútumok felülírják a megadott értékeket data-bs-config. Ezenkívül a meglévő adatattribútumok JSON-értékeket, például data-bs-delay='{"show":0,"hide":150}'.
| Név | típus | Alapértelmezett | Leírás |
|---|---|---|---|
parent |
választó, DOM elem | null |
Ha szülő van megadva, akkor a megadott szülő alatti összes összecsukható elem bezárul, amikor ez az összecsukható elem megjelenik. (hasonlóan a hagyományos harmonika viselkedéshez - ez cardosztályfüggő). Az attribútumot a célösszecsukható területen kell beállítani. |
toggle |
logikai érték | true |
Bekapcsolja az összecsukható elemet híváskor. |
Mód
Aszinkron módszerek és átmenetek
Minden API metódus aszinkron , és átmenetet indít . Visszatérnek a hívóhoz, amint az átmenet elkezdődik, de még azelőtt, hogy az véget érne . Ezenkívül a rendszer figyelmen kívül hagyja az átmeneti komponens metódushívásait .
További információért tekintse meg JavaScript dokumentációnkat .
A tartalmat összecsukható elemként aktiválja. Elfogad egy opcionális opciót object.
A konstruktorral összecsukható példányt hozhat létre, például:
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
toggle: false
})
| Módszer | Leírás |
|---|---|
dispose |
Elpusztítja egy elem összeomlását. (Eltávolítja a DOM elemen tárolt adatokat) |
getInstance |
A statikus módszer, amely lehetővé teszi a DOM-elemhez társított összecsukási példány lekérését, a következőképpen használhatja: bootstrap.Collapse.getInstance(element). |
getOrCreateInstance |
Statikus metódus, amely egy DOM-elemhez társított összecsukott példányt ad vissza, vagy hoz létre egy újat, ha nem lett inicializálva. Így használhatod: bootstrap.Collapse.getOrCreateInstance(element). |
hide |
Elrejti az összecsukható elemet. Visszatér a hívóhoz, mielőtt az összecsukható elem ténylegesen el lett volna rejtve (pl. az hidden.bs.collapseesemény bekövetkezte előtt). |
show |
Összecsukható elemet jelenít meg. Visszatér a hívóhoz, mielőtt az összecsukható elem ténylegesen megjelenne (pl. az shown.bs.collapseesemény bekövetkezte előtt). |
toggle |
Az összecsukható elemet megjelenített vagy rejtett állapotba kapcsolja. Visszatér a hívóhoz, mielőtt az összecsukható elem ténylegesen megjelenne vagy elrejtődne (azaz mielőtt a shown.bs.collapsevagy hidden.bs.collapseesemény bekövetkezne). |
Események
A Bootstrap összecsukási osztálya felfed néhány eseményt az összecsukási funkcióhoz való kapcsolódáshoz.
| Esemény típus | Leírás |
|---|---|
hide.bs.collapse |
Ez az esemény azonnal aktiválódik, amikor a hidemetódus meghívásra került. |
hidden.bs.collapse |
Ez az esemény akkor aktiválódik, amikor egy összecsukott elemet elrejtettek a felhasználó elől (megvárja a CSS-átmenetek befejezését). |
show.bs.collapse |
Ez az esemény azonnal aktiválódik a showpéldánymetódus meghívásakor. |
shown.bs.collapse |
Ez az esemény akkor aktiválódik, amikor egy összecsukott elem láthatóvá lett a felhasználó számára (megvárja a CSS-átmenetek befejezését). |
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
// do something...
})