Colapso
Alterne a visibilidade do conteúdo em seu projeto com algumas classes e nossos plugins JavaScript.
Como funciona
O plug-in JavaScript de recolhimento é usado para mostrar e ocultar conteúdo. Botões ou âncoras são usados como gatilhos que são mapeados para elementos específicos que você alterna. Recolher um elemento irá animar o height
seu valor atual para 0
. Dado como o CSS lida com animações, você não pode usar padding
em um .collapse
elemento. Em vez disso, use a classe como um elemento de encapsulamento independente.
prefers-reduced-motion
consulta de mídia. Consulte a
seção de movimento reduzido de nossa documentação de acessibilidade .
Exemplo
Clique nos botões abaixo para mostrar e ocultar outro elemento por meio de alterações de classe:
.collapse
esconde conteúdo.collapsing
é aplicado durante as transições.collapse.show
mostra o conteúdo
Geralmente, recomendamos usar um botão com o data-bs-target
atributo. Embora não seja recomendado do ponto de vista semântico, você também pode usar um link com o href
atributo (e um role="button"
). Em ambos os casos, o data-bs-toggle="collapse"
é necessário.
<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
O plug-in de recolhimento também suporta o recolhimento horizontal. Adicione a .collapse-horizontal
classe modificadora para fazer a transição width
em vez de height
e defina a width
no elemento filho imediato. Sinta-se à vontade para escrever seu próprio Sass personalizado, usar estilos inline ou usar nossos utilitários de largura .
min-height
conjunto para evitar repinturas excessivas em nossos documentos, isso não é explicitamente obrigatório.
Somente o width
no elemento filho é necessário.
<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>
Vários destinos
Um <button>
ou <a>
pode mostrar e ocultar vários elementos referenciando-os com um seletor em seu atributo href
ou . data-bs-target
Múltiplos <button>
ou <a>
podem mostrar e ocultar um elemento se cada um deles o referenciar com seu atributo href
oudata-bs-target
<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>
Acessibilidade
Certifique-se de adicionar aria-expanded
ao elemento de controle. Esse atributo transmite explicitamente o estado atual do elemento desmontável vinculado ao controle para leitores de tela e tecnologias assistivas semelhantes. Se o elemento recolhível for fechado por padrão, o atributo no elemento de controle deverá ter um valor de aria-expanded="false"
. Se você definiu o elemento recolhível para ser aberto por padrão usando a show
classe, defina aria-expanded="true"
no controle. O plug-in alternará automaticamente esse atributo no controle com base no fato de o elemento recolhível ter sido aberto ou fechado (via JavaScript ou porque o usuário acionou outro elemento de controle também vinculado ao mesmo elemento recolhível). Se o elemento HTML do elemento de controle não for um botão (por exemplo, um <a>
ou <div>
), o atributorole="button"
deve ser adicionado ao elemento.
Se o seu elemento de controle tem como alvo um único elemento recolhível – ou seja, o data-bs-target
atributo está apontando para um id
seletor – você deve adicionar o aria-controls
atributo ao elemento de controle, contendo o id
do elemento recolhível. Leitores de tela modernos e tecnologias assistivas semelhantes fazem uso desse atributo para fornecer aos usuários atalhos adicionais para navegar diretamente para o próprio elemento recolhível.
Observe que a implementação atual do Bootstrap não cobre as várias interações opcionais de teclado descritas no padrão de acordeão do ARIA Authoring Practices Guide - você precisará incluí-las você mesmo com JavaScript personalizado.
Sass
Variáveis
$transition-collapse: height .35s ease;
$transition-collapse-width: width .35s ease;
Aulas
As classes de transição de colapso podem ser encontradas em scss/_transitions.scss
, pois são compartilhadas em vários componentes (colapso e acordeão).
.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);
}
}
Uso
O plugin de colapso utiliza algumas classes para lidar com o trabalho pesado:
.collapse
esconde o conteúdo.collapse.show
mostra o conteúdo.collapsing
é adicionado quando a transição começa e removido quando termina
Essas classes podem ser encontradas em _transitions.scss
.
Por atributos de dados
Basta adicionar data-bs-toggle="collapse"
e data-bs-target
a ao elemento para atribuir automaticamente o controle de um ou mais elementos recolhíveis. O data-bs-target
atributo aceita um seletor CSS ao qual aplicar o recolhimento. Certifique-se de adicionar a classe collapse
ao elemento recolhível. Se você quiser que ele seja aberto por padrão, adicione a classe adicional show
.
Para adicionar gerenciamento de grupo tipo acordeão a uma área recolhível, adicione o atributo data data-bs-parent="#selector"
. Consulte a página do acordeão para obter mais informações.
Por JavaScript
Ative manualmente com:
const collapseElementList = document.querySelectorAll('.collapse')
const collapseList = [...collapseElementList].map(collapseEl => new bootstrap.Collapse(collapseEl))
Opções
Como as opções podem ser passadas por meio de atributos de dados ou JavaScript, você pode anexar um nome de opção a data-bs-
, como em data-bs-animation="{value}"
. Certifique-se de alterar o tipo de caso do nome da opção de “ camelCase ” para “ kebab-case ” ao passar as opções por meio de atributos de dados. Por exemplo, use data-bs-custom-class="beautifier"
em vez de data-bs-customClass="beautifier"
.
A partir do Bootstrap 5.2.0, todos os componentes oferecem suporte a um atributo experimental de dados reservados data-bs-config
que pode abrigar a configuração simples do componente como uma string JSON. Quando um elemento tem atributos data-bs-config='{"delay":0, "title":123}'
e data-bs-title="456"
, o valor final title
será 456
e os atributos de dados separados substituirão os valores fornecidos em data-bs-config
. Além disso, os atributos de dados existentes podem hospedar valores JSON como data-bs-delay='{"show":0,"hide":150}'
.
Nome | Modelo | Predefinição | Descrição |
---|---|---|---|
parent |
seletor, elemento DOM | null |
Se pai for fornecido, todos os elementos recolhíveis sob o pai especificado serão fechados quando este item recolhível for mostrado. (semelhante ao comportamento tradicional do acordeão - isso depende da card classe). O atributo deve ser definido na área desmontável de destino. |
toggle |
boleano | true |
Alterna o elemento recolhível na invocação. |
Métodos
Métodos e transições assíncronas
Todos os métodos de API são assíncronos e iniciam uma transição . Eles retornam ao chamador assim que a transição é iniciada, mas antes que ela termine . Além disso, uma chamada de método em um componente de transição será ignorada .
Consulte nossa documentação JavaScript para obter mais informações .
Ativa seu conteúdo como um elemento recolhível. Aceita opções opcionais object
.
Você pode criar uma instância de recolhimento com o construtor, por exemplo:
const bsCollapse = new bootstrap.Collapse('#myCollapse', {
toggle: false
})
Método | Descrição |
---|---|
dispose |
Destrói o colapso de um elemento. (Remove os dados armazenados no elemento DOM) |
getInstance |
Método estático que permite obter a instância de colapso associada a um elemento DOM, você pode usá-lo assim: bootstrap.Collapse.getInstance(element) . |
getOrCreateInstance |
Método estático que retorna uma instância de recolhimento associada a um elemento DOM ou cria uma nova caso não tenha sido inicializada. Você pode usar assim: bootstrap.Collapse.getOrCreateInstance(element) . |
hide |
Oculta um elemento recolhível. Retorna ao chamador antes que o elemento colapsável tenha sido ocultado (por exemplo, antes que o hidden.bs.collapse evento ocorra). |
show |
Mostra um elemento recolhível. Retorna ao chamador antes que o elemento recolhível tenha realmente sido mostrado (por exemplo, antes que o shown.bs.collapse evento ocorra). |
toggle |
Alterna um elemento recolhível para mostrado ou oculto. Retorna ao chamador antes que o elemento recolhível tenha realmente sido mostrado ou ocultado (ou seja, antes que o evento shown.bs.collapse or hidden.bs.collapse ocorra). |
Eventos
A classe de recolhimento do Bootstrap expõe alguns eventos para conexão com a funcionalidade de recolhimento.
Tipo de evento | Descrição |
---|---|
hide.bs.collapse |
Este evento é disparado imediatamente quando o hide método é chamado. |
hidden.bs.collapse |
Este evento é acionado quando um elemento de recolhimento foi ocultado do usuário (aguardará a conclusão das transições CSS). |
show.bs.collapse |
Este evento é acionado imediatamente quando o show método de instância é chamado. |
shown.bs.collapse |
Este evento é acionado quando um elemento de recolhimento se torna visível para o usuário (aguardará a conclusão das transições CSS). |
const myCollapsible = document.getElementById('myCollapsible')
myCollapsible.addEventListener('hidden.bs.collapse', event => {
// do something...
})