Preskoči na glavni sadržaj Preskoči na navigaciju dokumenata
Check
in English

Kolaps

Uključite vidljivost sadržaja u cijelom projektu pomoću nekoliko klasa i naših JavaScript dodataka.

Kako radi

JavaScript dodatak za sažimanje koristi se za prikazivanje i sakrivanje sadržaja. Dugmad ili sidra se koriste kao okidači koji su mapirani na određene elemente koje prebacujete. Sažimanje elementa će animirati heightiz njegove trenutne vrijednosti u 0. S obzirom na to kako CSS rukuje animacijama, ne možete koristiti paddingna .collapseelementu. Umjesto toga, koristite klasu kao nezavisni element omota.

Efekt animacije ove komponente ovisi o prefers-reduced-motionmedijskom upitu. Pogledajte odjeljak o smanjenom pokretu u našoj dokumentaciji o pristupačnosti .

Primjer

Kliknite na dugmad ispod da prikažete i sakrijete drugi element putem promjena klase:

  • .collapsesakriva sadržaj
  • .collapsingprimjenjuje se tokom prijelaza
  • .collapse.showprikazuje sadržaj

Općenito, preporučujemo korištenje gumba s data-bs-targetatributom. Iako se ne preporučuje sa semantičke tačke gledišta, takođe možete koristiti vezu sa hrefatributom (i role="button"). U oba slučaja data-bs-toggle="collapse"je potrebno.

Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger.
html
<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>

Horizontalno

Dodatak za kolaps također podržava horizontalno sažimanje. Dodajte .collapse-horizontalmodifikatorsku klasu da pređete widthumjesto heighti postavite a widthna neposredni podređeni element. Slobodno napišite vlastiti prilagođeni Sass, koristite inline stilove ili koristite naše uslužne programe širine .

Imajte na umu da iako primjer u nastavku ima min-heightskup za izbjegavanje prekomjernog preslikavanja u našim dokumentima, to nije izričito potrebno. Potreban je samo widthon podređeni element.

This is some placeholder content for a horizontal collapse. It's hidden by default and shown when triggered.
html
<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>

Više meta

A <button>ili <a>može prikazati i sakriti više elemenata upućivanjem na njih pomoću selektora u svom hrefili data-bs-targetatributu. Višestruki <button>ili <a>mogu prikazati i sakriti element ako svaki od njih referencira sa svojim hrefili data-bs-targetatributom

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.
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.
html
<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>

Pristupačnost

Obavezno dodajte aria-expandedkontrolni element. Ovaj atribut eksplicitno prenosi trenutno stanje sklopivog elementa povezanog s kontrolom na čitače ekrana i slične pomoćne tehnologije. Ako je sklopivi element zatvoren prema zadanim postavkama, atribut na kontrolnom elementu trebao bi imati vrijednost aria-expanded="false". Ako ste postavili da sklopivi element bude otvoren prema zadanim postavkama pomoću showklase, aria-expanded="true"umjesto toga postavite na kontroli. Dodatak će automatski uključiti ovaj atribut na kontroli na osnovu toga da li je sklopivi element otvoren ili zatvoren (putem JavaScripta, ili zato što je korisnik pokrenuo drugi kontrolni element koji je također vezan za isti sklopivi element). Ako HTML element kontrolnog elementa nije dugme (npr. <a>ili <div>), atributrole="button"treba dodati elementu.

Ako vaš kontrolni element cilja na jedan sklopivi element – ​​tj. data-bs-targetatribut pokazuje na idselektor – trebali biste dodati aria-controlsatribut kontrolnom elementu, koji sadrži idsklopivi element. Moderni čitači ekrana i slične pomoćne tehnologije koriste ovaj atribut kako bi korisnicima pružile dodatne prečice za navigaciju direktno do samog sklopivog elementa.

Imajte na umu da Bootstrap-ova trenutna implementacija ne pokriva različite opcione interakcije sa tastaturom opisane u ARIA Authoring Practices Guide obrascu harmonike - moraćete da ih sami uključite u prilagođeni JavaScript.

Sass

Varijable

$transition-collapse:         height .35s ease;
$transition-collapse-width:   width .35s ease;

Casovi

Prelazne klase kolapsa se mogu naći u scss/_transitions.scssjer se dijele na više komponenti (kolaps i 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);
  }
}

Upotreba

Dodatak za kolaps koristi nekoliko klasa za rukovanje teškim podizanjem:

  • .collapsesakriva sadržaj
  • .collapse.showprikazuje sadržaj
  • .collapsingse dodaje kada prijelaz počne, a uklanja se kada se završi

Ovi časovi se mogu naći u _transitions.scss.

Preko atributa podataka

Samo dodajte data-bs-toggle="collapse"i a data-bs-targetelementu da automatski dodijelite kontrolu nad jednim ili više sklopivih elemenata. Atribut data-bs-targetprihvaća CSS selektor za primjenu kolapsa na. Obavezno dodajte klasu collapsesklopivom elementu. Ako želite da se zadano otvori, dodajte dodatnu klasu show.

Da biste dodali upravljanje grupama nalik harmonici u sklopivu oblast, dodajte atribut podataka data-bs-parent="#selector". Za više informacija pogledajte stranicu o harmonici .

Preko JavaScripta

Omogućite ručno pomoću:

const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))

Opcije

Kako se opcije mogu proslijediti putem atributa podataka ili JavaScripta, možete dodati naziv opcije u data-bs-, kao u data-bs-animation="{value}". Obavezno promijenite tip slučaja naziva opcije iz “ camelCase ” u “ kebab-case ” prilikom prosljeđivanja opcija putem atributa podataka. Na primjer, koristite data-bs-custom-class="beautifier"umjesto data-bs-customClass="beautifier".

Od Bootstrapa 5.2.0, sve komponente podržavaju eksperimentalni atribut rezerviranih podataka data-bs-configkoji može smjestiti jednostavnu konfiguraciju komponente kao JSON string. Kada element ima atribute data-bs-config='{"delay":0, "title":123}'i data-bs-title="456", konačna titlevrijednost će biti 456i odvojeni atributi podataka će nadjačati vrijednosti date na data-bs-config. Osim toga, postojeći atributi podataka mogu sadržavati JSON vrijednosti poput data-bs-delay='{"show":0,"hide":150}'.

Ime Tip Default Opis
parent selektor, DOM element null Ako je naveden roditelj, tada će svi sklopivi elementi ispod navedenog nadređenog biti zatvoreni kada se prikaže ova sklopiva stavka. (slično tradicionalnom ponašanju harmonike - ovo zavisi od cardklase). Atribut se mora postaviti na ciljno sklopivo područje.
toggle boolean true Uključuje sklopivi element pri pozivanju.

Metode

Asinhrone metode i prijelazi

Sve API metode su asinhrone i pokreću tranziciju . Oni se vraćaju pozivaocu čim prijelaz započne, ali prije nego što se završi . Osim toga, poziv metode na prelaznu komponentu će biti zanemaren .

Pogledajte našu JavaScript dokumentaciju za više informacija .

Aktivira vaš sadržaj kao sklopivi element. Prihvata opcione opcije object.

Možete kreirati instancu kolapsa pomoću konstruktora, na primjer:

const bsCollapse = new bootstrap.Collapse('#myCollapse', {
  toggle: false
})
Metoda Opis
dispose Uništava kolaps elementa. (Uklanja pohranjene podatke na DOM elementu)
getInstance Statička metoda koja vam omogućava da dobijete instancu kolapsa pridruženu DOM elementu, možete je koristiti ovako: bootstrap.Collapse.getInstance(element).
getOrCreateInstance Statička metoda koja vraća instancu kolapsa pridruženu DOM elementu ili kreira novu u slučaju da nije inicijalizirana. Možete ga koristiti ovako: bootstrap.Collapse.getOrCreateInstance(element).
hide Sakriva sklopivi element. Vraća pozivaocu prije nego što je sklopivi element zapravo skriven (npr. prije nego što se hidden.bs.collapsedogađaj dogodi).
show Prikazuje sklopivi element. Vraća pozivaocu prije nego što je sklopivi element zapravo prikazan (npr. prije nego što se shown.bs.collapsedogađaj dogodi).
toggle Prebacuje sklopivi element na prikazan ili skriven. Vraća pozivaocu prije nego što je sklopivi element zapravo prikazan ili sakriven (tj. prije nego se dogodi događaj shown.bs.collapseili ).hidden.bs.collapse

Događaji

Bootstrapova klasa kolapsa izlaže nekoliko događaja za spajanje na funkcionalnost kolapsa.

Vrsta događaja Opis
hide.bs.collapse Ovaj događaj se pokreće odmah kada je hidemetoda pozvana.
hidden.bs.collapse Ovaj događaj se pokreće kada je element sažimanja skriven od korisnika (će čekati da se CSS prijelazi dovrše).
show.bs.collapse Ovaj događaj se aktivira odmah kada showse pozove metoda instance.
shown.bs.collapse Ovaj događaj se pokreće kada se element sažimanja učini vidljivim korisniku (će čekati da se CSS tranzicije dovrše).
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
  // do something...
})