Grupo de lista

Grupos de listas são componentes flexíveis e poderosos para mostrar vários conteúdos. Modifique e aprimore-o para suportar quase qualquer conteúdo.

Exemplo básico

O grupo de lista mais básico é uma <ul> com <li> e algumas classes específicas. Desenvolva com as opções a seguir ou com seu próprio CSS, dependendo da sua necessidade.

  • Cras justo odio
  • Dapibus ac facilisis in
  • Morbi leo risus
  • Porta ac consectetur ac
  • Vestibulum at eros
<ul class="list-group">
  <li class="list-group-item">Cras justo odio</li>
  <li class="list-group-item">Dapibus ac facilisis in</li>
  <li class="list-group-item">Morbi leo risus</li>
  <li class="list-group-item">Porta ac consectetur ac</li>
  <li class="list-group-item">Vestibulum at eros</li>
</ul>

Itens ativos

Use .active em um .list-group-item para indicar a seleção ativa, no momento.

  • Cras justo odio
  • Dapibus ac facilisis in
  • Morbi leo risus
  • Porta ac consectetur ac
  • Vestibulum at eros
<ul class="list-group">
  <li class="list-group-item active">Cras justo odio</li>
  <li class="list-group-item">Dapibus ac facilisis in</li>
  <li class="list-group-item">Morbi leo risus</li>
  <li class="list-group-item">Porta ac consectetur ac</li>
  <li class="list-group-item">Vestibulum at eros</li>
</ul>

Itens desativados

Use .disabled em um .list-group-item para fazê-lo ter aparência desativada. Perceba que alguns elementos com .disabled vão precisar de JavaScript customizado para desativar seus eventos de clique, totalmente (ex: links).

  • Cras justo odio
  • Dapibus ac facilisis in
  • Morbi leo risus
  • Porta ac consectetur ac
  • Vestibulum at eros
<ul class="list-group">
  <li class="list-group-item disabled">Cras justo odio</li>
  <li class="list-group-item">Dapibus ac facilisis in</li>
  <li class="list-group-item">Morbi leo risus</li>
  <li class="list-group-item">Porta ac consectetur ac</li>
  <li class="list-group-item">Vestibulum at eros</li>
</ul>

Use <a> ou <button> para criar itens do grupo de lista acionáveis com estados hover, disabled e active, adicionando .list-group-item-action. Nós separamos estas pseudo-classes, para assegurar que grupos de listas feitos com elementos não interativos (tipo <li> ou <div>) não permitam insinuações de clique ou toque.

Se assegure de não usar as classes .btn padrões, aqui.

<div class="list-group">
  <a href="#" class="list-group-item list-group-item-action active">
    Cras justo odio
  </a>
  <a href="#" class="list-group-item list-group-item-action">Dapibus ac facilisis in</a>
  <a href="#" class="list-group-item list-group-item-action">Morbi leo risus</a>
  <a href="#" class="list-group-item list-group-item-action">Porta ac consectetur ac</a>
  <a href="#" class="list-group-item list-group-item-action disabled">Vestibulum at eros</a>
</div>

Com <button>, você também pode fazer uso do atributo disabled, invés da classe .disabled. Infelizmente, elementos <a> não suportam o atributo disabled.

<div class="list-group">
  <button type="button" class="list-group-item list-group-item-action active">
    Cras justo odio
  </button>
  <button type="button" class="list-group-item list-group-item-action">Dapibus ac facilisis in</button>
  <button type="button" class="list-group-item list-group-item-action">Morbi leo risus</button>
  <button type="button" class="list-group-item list-group-item-action">Porta ac consectetur ac</button>
  <button type="button" class="list-group-item list-group-item-action" disabled>Vestibulum at eros</button>
</div>

Flush

Use .list-group-flush para remover algumas bordas e cantos arredondados para renderizar itens do grupo de lista, de ponta-a-ponta, em um container pai.

  • Cras justo odio
  • Dapibus ac facilisis in
  • Morbi leo risus
  • Porta ac consectetur ac
  • Vestibulum at eros
<ul class="list-group list-group-flush">
  <li class="list-group-item">Cras justo odio</li>
  <li class="list-group-item">Dapibus ac facilisis in</li>
  <li class="list-group-item">Morbi leo risus</li>
  <li class="list-group-item">Porta ac consectetur ac</li>
  <li class="list-group-item">Vestibulum at eros</li>
</ul>

Classes contextuais

Use classes contextuais para estilizar itens da lista com belos caracteres e cor de fundo.

  • Dapibus ac facilisis in
  • Um simples item primary do grupo de lista
  • Um simples item secondary do grupo de lista
  • Um simples item success do grupo de lista
  • Um simples item danger do grupo de lista
  • Um simples item warning do grupo de lista
  • Um simples item info do grupo de lista
  • Um simples item light do grupo de lista
  • Um simples item dark do grupo de lista
<ul class="list-group">
  <li class="list-group-item">Dapibus ac facilisis in</li>

  
  <li class="list-group-item list-group-item-primary">Um simples item primary do grupo de lista</li>
  <li class="list-group-item list-group-item-secondary">Um simples item secondary do grupo de lista</li>
  <li class="list-group-item list-group-item-success">Um simples item success do grupo de lista</li>
  <li class="list-group-item list-group-item-danger">Um simples item danger do grupo de lista</li>
  <li class="list-group-item list-group-item-warning">Um simples item warning do grupo de lista</li>
  <li class="list-group-item list-group-item-info">Um simples item info do grupo de lista</li>
  <li class="list-group-item list-group-item-light">Um simples item light do grupo de lista</li>
  <li class="list-group-item list-group-item-dark">Um simples item dark do grupo de lista</li>
</ul>

Classes contextuais também funcionam com .list-group-item-action. Perceba a presença dos estilos hover, os quais não estavam no presentes no exemplo anterior. O estado .active também é suportado, bastando aplicá-lo para indicar uma seleção ativa em um item do grupo de lista.

<div class="list-group">
  <a href="#" class="list-group-item list-group-item-action">Dapibus ac facilisis in</a>

  
  <a href="#" class="list-group-item list-group-item-action list-group-item-primary">Um simples item primary do grupo de lista</a>
  <a href="#" class="list-group-item list-group-item-action list-group-item-secondary">Um simples item secondary do grupo de lista</a>
  <a href="#" class="list-group-item list-group-item-action list-group-item-success">Um simples item success do grupo de lista</a>
  <a href="#" class="list-group-item list-group-item-action list-group-item-danger">Um simples item danger do grupo de lista</a>
  <a href="#" class="list-group-item list-group-item-action list-group-item-warning">Um simples item warning do grupo de lista</a>
  <a href="#" class="list-group-item list-group-item-action list-group-item-info">Um simples item info do grupo de lista</a>
  <a href="#" class="list-group-item list-group-item-action list-group-item-light">Um simples item light do grupo de lista</a>
  <a href="#" class="list-group-item list-group-item-action list-group-item-dark">Um simples item dark do grupo de lista</a>
</div>
Transmitindo significado a tecnologias assistivas

Usando cor para adicionar significado só fornece uma indicação visual, a qual não será transmitida para usuários de tecnologias assistivas (como leitores de telas). Se assegure que a informação denotada pela cor é tanto destacada do conteúdo (ex: o texto visível) ou está incluída em meios alternativos, como textos extras escondidos com a classe .sr-class.

Usando badges

Coloque badges em qualquer item do grupo de lista para exibir contadores, atividade e muito mais, com ajuda de alguns utilitários.

  • Cras alemanha odio 7
  • Dapibus ac facilisis in x
  • Morbi brasil risus 1
<ul class="list-group">
  <li class="list-group-item d-flex justify-content-between align-items-center">
    Cras alemanha odio
    <span class="badge badge-primary badge-pill">7</span>
  </li>
  <li class="list-group-item d-flex justify-content-between align-items-center">
    Dapibus ac facilisis in
    <span class="badge badge-primary badge-pill">x</span>
  </li>
  <li class="list-group-item d-flex justify-content-between align-items-center">
    Morbi brasil risus
    <span class="badge badge-primary badge-pill">1</span>
  </li>
</ul>

Conteúdo customizado

Coloque quase qualquer HTML dentro, mesmo em grupos de listas linkados, como o mostrado abaixo, com ajuda de utilitários flexbox.

<div class="list-group">
  <a href="#" class="list-group-item list-group-item-action flex-column align-items-start active">
    <div class="d-flex w-100 justify-content-between">
      <h5 class="mb-1">Cabeçalho do item</h5>
      <small>3 dias atrás</small>
    </div>
    <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
    <small>Donec id elit non mi porta.</small>
  </a>
  <a href="#" class="list-group-item list-group-item-action flex-column align-items-start">
    <div class="d-flex w-100 justify-content-between">
      <h5 class="mb-1">Cabeçalho do item</h5>
      <small class="text-muted">3 dias atrás</small>
    </div>
    <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
    <small class="text-muted">Donec id elit non mi porta.</small>
  </a>
  <a href="#" class="list-group-item list-group-item-action flex-column align-items-start">
    <div class="d-flex w-100 justify-content-between">
      <h5 class="mb-1">Cabeçalho do item</h5>
      <small class="text-muted">3 dias atrás</small>
    </div>
    <p class="mb-1">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
    <small class="text-muted">Donec id elit non mi porta.</small>
  </a>
</div>

Comportamento JavaScript

Use o plugin JavaScript tab (inclua-o, individualmente, ou usando o arquivo compilado bootstrap.js) para aprimorar nosso grupo de lista para criar paineis de abas de conteúdo local.

<div class="row">
  <div class="col-4">
    <div class="list-group" id="list-tab" role="tablist">
      <a class="list-group-item list-group-item-action active" id="list-home-list" data-toggle="list" href="#lista-home" role="tab" aria-controls="home">Home</a>
      <a class="list-group-item list-group-item-action" id="list-profile-list" data-toggle="list" href="#list-profile" role="tab" aria-controls="profile">Perfil</a>
      <a class="list-group-item list-group-item-action" id="list-messages-list" data-toggle="list" href="#lista-mensagens" role="tab" aria-controls="messages">Mensagens</a>
      <a class="list-group-item list-group-item-action" id="list-settings-list" data-toggle="list" href="#lista-configuracoes" role="tab" aria-controls="settings">Configurações</a>
    </div>
  </div>
  <div class="col-8">
    <div class="tab-content" id="nav-tabContent">
      <div class="tab-pane fade show active" id="list-home" role="tabpanel" aria-labelledby="list-home-list">...</div>
      <div class="tab-pane fade" id="list-profile" role="tabpanel" aria-labelledby="list-profile-list">...</div>
      <div class="tab-pane fade" id="list-messages" role="tabpanel" aria-labelledby="list-messages-list">...</div>
      <div class="tab-pane fade" id="list-settings" role="tabpanel" aria-labelledby="list-settings-list">...</div>
    </div>
  </div>
</div>

via atributos data

Você pode ativar uma nevegação do grupo de lista, sem escrever qualquer JavaScript, simplesmente, especificando data-toggle="list" em um elemento. Use estes atributos data em um .list-group-item.

<!-- Grupo de lista -->
<div class="list-group" id="minhaLista" role="tablist">
  <a class="list-group-item list-group-item-action active" data-toggle="list" href="#home" role="tab">Home</a>
  <a class="list-group-item list-group-item-action" data-toggle="list" href="#perfil" role="tab">Perfil</a>
  <a class="list-group-item list-group-item-action" data-toggle="list" href="#mensagens" role="tab">Mensagens</a>
  <a class="list-group-item list-group-item-action" data-toggle="list" href="#configuracoes" role="tab">Configurações</a>
</div>

<!-- Painel de abas -->
<div class="tab-content">
  <div class="tab-pane active" id="home" role="tabpanel">...</div>
  <div class="tab-pane" id="perfil" role="tabpanel">...</div>
  <div class="tab-pane" id="mensagens" role="tabpanel">...</div>
  <div class="tab-pane" id="configuracoes" role="tabpanel">...</div>
</div>

Via JavaScript

Ative uma aba item de lista, via JavaScript (cada item de lista precisa ser ativado, individualmente):

$('#minhaLista a').on('click', function (e) {
  e.preventDefault()
  $(this).tab('show')
})

Você pode ativar itens de listas individuais, em diversas maneiras:

$('#minhaLista a[href="#perfil"]').tab('show') // Selecione pelo ID da tag
$('#minhaLista a:first-child').tab('show') // Seleciona primeira aba
$('#minhaLista a:last-child').tab('show') // Seleciona última aba
$('#minhaLista a:nth-child(3)').tab('show') // Seleciona terceira aba

Efeito fade

Para fazer o painel de abas receber o efeito fade in, use .fade em cada .tab-pane. A primeira aba também deve receber .show, para fazer o conteúdo inicial visível.

<div class="tab-content">
  <div class="tab-pane fade show active" id="home" role="tabpanel">...</div>
  <div class="tab-pane fade" id="perfil" role="tabpanel">...</div>
  <div class="tab-pane fade" id="mensagens" role="tabpanel">...</div>
  <div class="tab-pane fade" id="configuracoes" role="tabpanel">...</div>
</div>

Métodos

$().tab

Ativa um item de lista e o container de conteúdo. Abas devem ter um data-target ou um href remetendo a um container, no DOM.

<div class="list-group" id="minhaLista" role="tablist">
  <a class="list-group-item list-group-item-action active" data-toggle="list" href="#home" role="tab">Home</a>
  <a class="list-group-item list-group-item-action" data-toggle="list" href="#perfil" role="tab">Perfil</a>
  <a class="list-group-item list-group-item-action" data-toggle="list" href="#mensagens" role="tab">Mensagens</a>
  <a class="list-group-item list-group-item-action" data-toggle="list" href="#configuracoes" role="tab">Configurações</a>
</div>

<div class="tab-content">
  <div class="tab-pane active" id="home" role="tabpanel">...</div>
  <div class="tab-pane" id="perfil" role="tabpanel">...</div>
  <div class="tab-pane" id="mensagens" role="tabpanel">...</div>
  <div class="tab-pane" id="configuracoes" role="tabpanel">...</div>
</div>

<script>
  $(function () {
    $('#minhaLista a:last-child').tab('show')
  })
</script>

.tab(‘show’)

Seleciona o item de lista específico e mostra o painel associado a ele. Qualquer outro item de lista que foi, anteriormente selecionado, se torna não selecionado e seu painel associado se esconde. Retorna ao invocador, antes do painel de abas ser exibido, de fato (antes do evento shown.bs.tab ocorrer, por exemplo).

$('#algumListItem').tab('show')

Eventos

Quando mostrando uma nova aba, os eventos se acionam na seguinte ordem:

  1. hide.bs.tab (na aba ativa, no momento)
  2. show.bs.tab (na aba que está para ser exibida)
  3. hidden.bs.tab (na aba ativa anteriormente, a mesma do evento hide.bs.tab)
  4. shown.bs.tab (na aba recém ativa, a mesma do evento show.bs.tab)

Se nenhuma aba já foi ativada, os eventos hide.bs.tab e hidden.bs.tab não serão mostrados.

Tipo de evento Descrição
show.bs.tab Este evento é acionado na exibição de aba, mas antes da nova aba ser exibida. Use event.target e event.relatedTarget para atingir a aba ativa e a aba anteriormente ativa, respectivamente.
shown.bs.tab Este evento é acionado na exibição de aba, depois da aba ser mostrada. Use event.target e event.relatedTarget para atingir a aba ativa e a aba anteriormente ativa, respectivamente.
hide.bs.tab Este evento é acionado quando uma nova aba está para ser exibida e a aba anterior está para ser oculta. Use event.target e event.relatedTarget para atingir a aba ativa, no momento, e a próxima aba que está para ser ativa, respectivamente.
hidden.bs.tab Este evento é acionado depois de uma nova aba ser exibida e a aba ativada anteriormente estar escondida. Use event.target e event.relatedTarget para atingir a aba ativa anteriormente e a nova aba ativa, respectivamente.
$('a[data-toggle="list"]').on('shown.bs.tab', function (e) {
  e.target // Aba recém ativa
  e.relatedTarget // Aba ativa anteriorment
})