Пређи на главни садржај Прескочи на навигацију докумената
Check
in English

Колапс

Укључите видљивост садржаја у свом пројекту помоћу неколико класа и наших ЈаваСцрипт до��атака.

Како то ради

ЈаваСцрипт додатак за колапс се користи за приказивање и сакривање садржаја. Дугмад или сидра се користе као окидачи који су мапирани на одређене елементе које пребацујете. Сажимањем елемента ће се анимирати heightса његове тренутне вредности на 0. С обзиром на то како ЦСС рукује анимацијама, не можете користити paddingна .collapseелементу. Уместо тога, користите класу као независни елемент омотача.

Ефекат анимације ове компоненте зависи од prefers-reduced-motionмедијског упита. Погледајте одељак о смањеном покрету наше документације о приступачности .

Пример

Кликните на дугмад испод да бисте приказали и сакрили други елемент путем промена класе:

  • .collapseскрива садржај
  • .collapsingпримењује се током прелаза
  • .collapse.showприказује садржај

Генерално, препоручујемо коришћење дугмета са data-bs-targetатрибутом. Иако се са семантичке тачке гледишта не препоручује, такође можете користити везу са hrefатрибутом (и role="button"). У оба случаја data-bs-toggle="collapse"је потребно.

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

Хоризонтално

Додатак за колапс такође подржава хоризонтално сажимање. Додајте .collapse-horizontalкласу модификатора да бисте пребацили widthуместо heightи поставите а widthна непосредно подређени елемент. Слободно напишите сопствени прилагођени Сасс, користите уграђене стилове или користите наше услужне програме за ширину .

Имајте на уму да иако пример у наставку има min-heightскуп за избегавање прекомерног пресликавања у нашим документима, то није изричито потребно. Потребан је само widthподређени елемент.

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

Више мета

А <button>или <a>може да прикаже и сакрије више елемената упућивањем на њих помоћу селектора у свом hrefили data-bs-targetатрибуту. Вишеструки <button>или <a>могу да прикажу и сакрију елемент ако сваки од њих референцира са својим hrefили data-bs-targetатрибутом

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.
хтмл
<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>

Приступачност

Обавезно додајте aria-expandedконтролни елемент. Овај атрибут експлицитно преноси тренутно стање склопивог елемента повезаног са контролом читачима екрана и сличним помоћним технологијама. Ако је склопиви елемент затворен по подразумеваној вредности, атрибут на контролном елементу треба да има вредност aria-expanded="false". Ако сте подесили да склопиви елемент буде подразумевано отворен помоћу showкласе, aria-expanded="true"уместо тога поставите на контроли. Додатак ће аутоматски укључити овај атрибут на контроли на основу тога да ли је склопиви елемент отворен или затворен (преко ЈаваСцрипт-а, или зато што је корисник покренуо други контролни елемент који је такође везан за исти склопиви елемент). Ако ХТМЛ елемент контролног елемента није дугме (нпр. <a>или <div>), атрибутrole="button"треба додати елементу.

Ако ваш контролни елемент циља на један склопиви елемент – тј. data-bs-targetатрибут показује на idселектор – требало би да додате aria-controlsатрибут контролном елементу, који садржи idелемент склопивог. Савремени читачи екрана и сличне помоћне технологије користе овај атрибут како би корисницима пружиле додатне пречице за навигацију директно до самог склопивог елемента.

Имајте на уму да тренутна имплементација Боотстрапа не покрива различите опционе интеракције са тастатуром описане у АРИА-овом водичу за ауторске праксе за хармонику – мораћете да их сами укључите у прилагођени ЈаваСцрипт.

Сасс

Променљиве

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

класе

Прелазне класе колапса се могу наћи у scss/_transitions.scssјер се деле у више компоненти (колапс и хармоника).

.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);
  }
}

Употреба

Додатак за колапс користи неколико класа да би се носио са тешким подизањем:

  • .collapseсакрива садржај
  • .collapse.showприказује садржај
  • .collapsingсе додаје када транзиција почне, а уклања се када се заврши

Ове класе се могу наћи у _transitions.scss.

Преко атрибута података

Само додајте data-bs-toggle="collapse"и а data-bs-targetелементу да бисте аутоматски доделили контролу над једним или више склопивих елемената. Атрибут data-bs-targetприхвата ЦСС селектор за примену скупљања. Обавезно додајте класу collapseу склопиви елемент. Ако желите да се подразумевано отвори, додајте додатну класу show.

Да бисте додали управљање групама налик хармоници у склопиву област, додајте атрибут података data-bs-parent="#selector". За више информација погледајте страницу о хармоници .

Преко ЈаваСцрипт-а

Омогућите ручно помоћу:

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

Опције

Пошто опције могу да се прослеђују преко атрибута података или ЈаваСцрипт-а, можете додати име опције у data-bs-, као у data-bs-animation="{value}". Обавезно промените тип случаја назива опције из „ цамелЦасе ” у „ кебаб-цасе ” када преносите опције преко атрибута података. На пример, користите data-bs-custom-class="beautifier"уместо data-bs-customClass="beautifier".

Од Боотстрап 5.2.0, све компоненте подржавају експериментални резервисани атрибут података data-bs-configкоји може да садржи једноставну конфигурацију компоненте као ЈСОН стринг. Када елемент има атрибуте data-bs-config='{"delay":0, "title":123}'и data-bs-title="456", коначна titleвредност ће бити 456и одвојени атрибути података ће заменити вредности дате на data-bs-config. Поред тога, постојећи атрибути података могу да садрже ЈСОН вредности попут data-bs-delay='{"show":0,"hide":150}'.

Име Тип Уобичајено Опис
parent селектор, ДОМ елемент null Ако је наведен родитељ, онда ће сви склопиви елементи испод наведеног надређеног бити затворени када се прикаже ова склопива ставка. (слично традиционалном понашању хармонике - ово зависи од cardкласе). Атрибут мора бити постављен на циљну склопиву област.
toggle боолеан true Укључује склопиви елемент при позивању.

Методе

Асинхроне методе и прелази

Све АПИ методе су асинхроне и покрећу транзицију . Они се враћају позиваоцу чим се транзиција започне, али пре него што се заврши . Поред тога, позив методе за прелазну компоненту биће занемарен .

Погледајте нашу ЈаваСцрипт документацију за више информација .

Активира ваш садржај као склопиви елемент. Прихвата опционе опције object.

Можете креирати инстанцу колапса помоћу конструктора, на пример:

const bsCollapse = new bootstrap.Collapse('#myCollapse', {
  toggle: false
})
Метод Опис
dispose Уништава колапс елемента. (Уклања сачуване податке на ДОМ елементу)
getInstance Статичка метода која вам омогућава да добијете инстанцу колапса повезана са ДОМ елементом, можете је користити овако: bootstrap.Collapse.getInstance(element).
getOrCreateInstance Статичка метода која враћа инстанцу колапса повезана са ДОМ елементом или креира нову у случају да није иницијализована. Можете га користити овако: bootstrap.Collapse.getOrCreateInstance(element).
hide Сакрива склопиви елемент. Враћа позиваоцу пре него што је склопиви елемент заиста сакривен (нпр. пре него што се hidden.bs.collapseдогађај деси).
show Приказује склопиви елемент. Враћа позиваоцу пре него што је склопиви елемент заправо приказан (нпр. пре него што се shown.bs.collapseдогађај деси).
toggle Пребацује склопиви елемент на приказан или скривен. Враћа позиваоцу пре него што је склопиви елемент заправо приказан или сакривен (тј. пре него што се деси догађај shown.bs.collapseили ).hidden.bs.collapse

Догађаји

Боотстрап-ова класа колапса излаже неколико догађаја за спајање на функционалност колапса.

Тип догађаја Опис
hide.bs.collapse Овај догађај се покреће одмах када се hideметода позове.
hidden.bs.collapse Овај догађај се покреће када је елемент сажимања сакривен од корисника (сачекаће да се ЦСС транзиције доврше).
show.bs.collapse Овај догађај се покреће одмах када showсе позове метод инстанце.
shown.bs.collapse Овај догађај се покреће када се кориснику учини видљивим елемент сажимања (сачекаће да се ЦСС транзиције доврше).
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
  // do something...
})