Seznam skupiny
Skupiny seznamů jsou flexibilní a výkonná součást pro zobrazení řady obsahu. Upravte je a rozšiřte je tak, aby podporovaly téměř jakýkoli obsah.
Základní příklad
Nejzákladnější skupinou seznamů je neuspořádaný seznam s položkami seznamu a správnými třídami. Stavte na něm pomocí následujících možností nebo podle potřeby pomocí vlastního CSS.
- Předmět
- Druhá položka
- Třetí položka
- Čtvrtá položka
- A pátý
<ul class="list-group">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">A fourth item</li>
<li class="list-group-item">And a fifth one</li>
</ul>
Aktivní položky
Přidat .active
do a .list-group-item
pro označení aktuálního aktivního výběru.
- Aktivní položka
- A second item
- A third item
- A fourth item
- And a fifth one
<ul class="list-group">
<li class="list-group-item active" aria-current="true">An active item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">A fourth item</li>
<li class="list-group-item">And a fifth one</li>
</ul>
Zakázané položky
Přidejte .disabled
do a .list-group-item
, aby se zdálo , že je zakázáno. Všimněte si, že některé prvky s .disabled
budou také vyžadovat vlastní JavaScript, aby bylo možné plně deaktivovat události kliknutí (např. odkazy).
- Zakázaná položka
- A second item
- A third item
- A fourth item
- And a fifth one
<ul class="list-group">
<li class="list-group-item disabled" aria-disabled="true">A disabled item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">A fourth item</li>
<li class="list-group-item">And a fifth one</li>
</ul>
Odkazy a tlačítka
Pomocí <a>
s nebo <button>
s vytvořte akceschopné položky skupiny seznamu se stavy umístění kurzoru, vypnuto a aktivní přidáním .list-group-item-action
. Tyto pseudotřídy oddělujeme, abychom zajistili, že skupiny seznamů vytvořené z neinteraktivních prvků (jako <li>
s nebo <div>
s) neposkytují možnost kliknutí nebo klepnutí.
Ujistěte se, že zde nepoužívejte standardní .btn
třídy .
<div class="list-group">
<a href="#" class="list-group-item list-group-item-action active" aria-current="true">
The current link item
</a>
<a href="#" class="list-group-item list-group-item-action">A second link item</a>
<a href="#" class="list-group-item list-group-item-action">A third link item</a>
<a href="#" class="list-group-item list-group-item-action">A fourth link item</a>
<a href="#" class="list-group-item list-group-item-action disabled" tabindex="-1" aria-disabled="true">A disabled link item</a>
</div>
S <button>
s můžete také použít disabled
atribut místo .disabled
třídy. Bohužel <a>
atribut nepodporují.
<div class="list-group">
<button type="button" class="list-group-item list-group-item-action active" aria-current="true">
The current button
</button>
<button type="button" class="list-group-item list-group-item-action">A second item</button>
<button type="button" class="list-group-item list-group-item-action">A third button item</button>
<button type="button" class="list-group-item list-group-item-action">A fourth button item</button>
<button type="button" class="list-group-item list-group-item-action" disabled>A disabled button item</button>
</div>
Spláchnout
Přidat .list-group-flush
, chcete-li odstranit některé okraje a zaoblené rohy, abyste vykreslili položky skupiny seznamu od okraje k okraji v nadřazeném kontejneru (např. karty).
- Předmět
- Druhá položka
- Třetí položka
- Čtvrtá položka
- A pátý
<ul class="list-group list-group-flush">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">A fourth item</li>
<li class="list-group-item">And a fifth one</li>
</ul>
Číslovaný
Přidejte .list-group-numbered
třídu modifikátoru (a volitelně použijte <ol>
prvek), abyste se mohli přihlásit k položkám skupiny číslovaného seznamu. Čísla jsou generována pomocí CSS (na rozdíl od <ol>
výchozího stylu prohlížeče) pro lepší umístění uvnitř položek skupiny seznamu a pro lepší přizpůsobení.
Čísla jsou generována counter-reset
na <ol>
, a pak stylizována a umístěna s ::before
pseudo-prvkem na <li>
s counter-increment
a content
.
- Cras justo odio
- Cras justo odio
- Cras justo odio
<ol class="list-group list-group-numbered">
<li class="list-group-item">Cras justo odio</li>
<li class="list-group-item">Cras justo odio</li>
<li class="list-group-item">Cras justo odio</li>
</ol>
Tyto fungují skvěle i s vlastním obsahem.
-
PodnadpisCras justo odio
-
PodnadpisCras justo odio
-
PodnadpisCras justo odio
<ol class="list-group list-group-numbered">
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">Subheading</div>
Cras justo odio
</div>
<span class="badge bg-primary rounded-pill">14</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">Subheading</div>
Cras justo odio
</div>
<span class="badge bg-primary rounded-pill">14</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">Subheading</div>
Cras justo odio
</div>
<span class="badge bg-primary rounded-pill">14</span>
</li>
</ol>
Horizontální
Přidat .list-group-horizontal
, chcete-li změnit rozvržení položek skupiny seznamu ze svislého na vodorovné přes všechny zarážky. Případně zvolte responzivní variantu .list-group-horizontal-{sm|md|lg|xl|xxl}
, aby byla skupina seznamů vodorovná počínaje bodem přerušení min-width
. V současné době nelze skupiny horizontálních seznamů kombinovat se skupinami zarovnávacích seznamů.
ProTip: Chcete položky skupiny seznamu stejné šířky, když jsou vodorovné? Přidat .flex-fill
do každé položky skupiny seznamu.
- Předmět
- Druhá položka
- Třetí položka
- Předmět
- Druhá položka
- Třetí položka
- Předmět
- Druhá položka
- Třetí položka
- Předmět
- Druhá položka
- Třetí položka
- Předmět
- Druhá položka
- Třetí položka
- Předmět
- Druhá položka
- Třetí položka
<ul class="list-group list-group-horizontal">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
<ul class="list-group list-group-horizontal-sm">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
<ul class="list-group list-group-horizontal-md">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
<ul class="list-group list-group-horizontal-lg">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
<ul class="list-group list-group-horizontal-xl">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
<ul class="list-group list-group-horizontal-xxl">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
Kontextové třídy
Použijte kontextové třídy ke stylování položek seznamu se stavovým pozadím a barvou.
- Jednoduchá výchozí položka skupiny seznamu
- Jednoduchá primární položka skupiny seznamu
- Jednoduchá sekundární položka skupiny seznamu
- Jednoduchá položka skupinového seznamu úspěšných
- Jednoduchá položka skupiny seznamu nebezpečí
- Jednoduchá položka skupiny seznamu varování
- Jednoduchá položka skupiny informačního seznamu
- Jednoduchý seznam skupinových položek
- Jednoduchá položka skupiny tmavého seznamu
<ul class="list-group">
<li class="list-group-item">A simple default list group item</li>
<li class="list-group-item list-group-item-primary">A simple primary list group item</li>
<li class="list-group-item list-group-item-secondary">A simple secondary list group item</li>
<li class="list-group-item list-group-item-success">A simple success list group item</li>
<li class="list-group-item list-group-item-danger">A simple danger list group item</li>
<li class="list-group-item list-group-item-warning">A simple warning list group item</li>
<li class="list-group-item list-group-item-info">A simple info list group item</li>
<li class="list-group-item list-group-item-light">A simple light list group item</li>
<li class="list-group-item list-group-item-dark">A simple dark list group item</li>
</ul>
Kontextové třídy také pracují s .list-group-item-action
. Všimněte si, že zde byly přidány styly přechodu, které nejsou uvedeny v předchozím příkladu. Podporován je také .active
stát; použijte jej k označení aktivního výběru na položce kontextové skupiny seznamu.
<div class="list-group">
<a href="#" class="list-group-item list-group-item-action">A simple default list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-primary">A simple primary list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-secondary">A simple secondary list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-success">A simple success list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-danger">A simple danger list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-warning">A simple warning list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-info">A simple info list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-light">A simple light list group item</a>
<a href="#" class="list-group-item list-group-item-action list-group-item-dark">A simple dark list group item</a>
</div>
Předávání významu asistenčním technologiím
Použití barvy k přidání významu poskytuje pouze vizuální indikaci, která nebude zprostředkována uživatelům asistenčních technologií – jako jsou čtečky obrazovky. Ujistěte se, že informace označené barvou jsou buď zřejmé ze samotného obsahu (např. viditelný text), nebo jsou zahrnuty alternativními prostředky, jako je další text skrytý ve .visually-hidden
třídě.
S odznaky
Přidejte odznaky k libovolné položce skupiny seznamu, abyste zobrazili počty nepřečtených, aktivitu a další pomocí některých nástrojů .
- Položka seznamu14
- Druhá položka seznamu2
- Třetí položka seznamu1
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">
A list item
<span class="badge bg-primary rounded-pill">14</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
A second list item
<span class="badge bg-primary rounded-pill">2</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
A third list item
<span class="badge bg-primary rounded-pill">1</span>
</li>
</ul>
Vlastní obsah
Přidejte téměř jakýkoli kód HTML, a to i pro skupiny propojených seznamů, jako je ta níže, pomocí nástrojů flexbox .
Záhlaví položky skupiny seznamu
Před 3 dnyNějaký zástupný obsah v odstavci.
A nějaké drobné písmo.Záhlaví položky skupiny seznamu
Před 3 dnyNějaký zástupný obsah v odstavci.
A nějaké tlumené drobné písmo.Záhlaví položky skupiny seznamu
Před 3 dnyNějaký zástupný obsah v odstavci.
A nějaké tlumené drobné písmo.<div class="list-group">
<a href="#" class="list-group-item list-group-item-action active" aria-current="true">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1">List group item heading</h5>
<small>3 days ago</small>
</div>
<p class="mb-1">Some placeholder content in a paragraph.</p>
<small>And some small print.</small>
</a>
<a href="#" class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1">List group item heading</h5>
<small class="text-muted">3 days ago</small>
</div>
<p class="mb-1">Some placeholder content in a paragraph.</p>
<small class="text-muted">And some muted small print.</small>
</a>
<a href="#" class="list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1">List group item heading</h5>
<small class="text-muted">3 days ago</small>
</div>
<p class="mb-1">Some placeholder content in a paragraph.</p>
<small class="text-muted">And some muted small print.</small>
</a>
</div>
Zaškrtávací políčka a rádia
Umístěte zaškrtávací políčka a přepínače Bootstrapu do položek skupin seznamu a upravte je podle potřeby. Můžete je použít bez <label>
s, ale nezapomeňte uvést aria-label
atribut a hodnotu pro usnadnění.
- První zaškrtávací políčko
- Druhé zaškrtávací políčko
- Třetí zaškrtávací políčko
- Čtvrté zaškrtávací políčko
- Páté zaškrtávací políčko
<ul class="list-group">
<li class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="" aria-label="...">
First checkbox
</li>
<li class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="" aria-label="...">
Second checkbox
</li>
<li class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="" aria-label="...">
Third checkbox
</li>
<li class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="" aria-label="...">
Fourth checkbox
</li>
<li class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="" aria-label="...">
Fifth checkbox
</li>
</ul>
A pokud chcete <label>
s jako .list-group-item
pro velké zasažené oblasti, můžete to udělat také.
<div class="list-group">
<label class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="">
First checkbox
</label>
<label class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="">
Second checkbox
</label>
<label class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="">
Third checkbox
</label>
<label class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="">
Fourth checkbox
</label>
<label class="list-group-item">
<input class="form-check-input me-1" type="checkbox" value="">
Fifth checkbox
</label>
</div>
Sass
Proměnné
$list-group-color: $gray-900;
$list-group-bg: $white;
$list-group-border-color: rgba($black, .125);
$list-group-border-width: $border-width;
$list-group-border-radius: $border-radius;
$list-group-item-padding-y: $spacer * .5;
$list-group-item-padding-x: $spacer;
$list-group-item-bg-scale: -80%;
$list-group-item-color-scale: 40%;
$list-group-hover-bg: $gray-100;
$list-group-active-color: $component-active-color;
$list-group-active-bg: $component-active-bg;
$list-group-active-border-color: $list-group-active-bg;
$list-group-disabled-color: $gray-600;
$list-group-disabled-bg: $list-group-bg;
$list-group-action-color: $gray-700;
$list-group-action-hover-color: $list-group-action-color;
$list-group-action-active-color: $body-color;
$list-group-action-active-bg: $gray-200;
Mixins
Používá se v kombinaci s $theme-colors
ke generování tříd kontextových variant pro .list-group-item
s.
@mixin list-group-item-variant($state, $background, $color) {
.list-group-item-#{$state} {
color: $color;
background-color: $background;
&.list-group-item-action {
&:hover,
&:focus {
color: $color;
background-color: shade-color($background, 10%);
}
&.active {
color: $white;
background-color: $color;
border-color: $color;
}
}
}
}
Smyčka
Smyčka, která generuje třídy modifikátoru s list-group-item-variant()
mixinem.
// List group contextual variants
//
// Add modifier classes to change text and background color on individual items.
// Organizationally, this must come after the `:hover` states.
@each $state, $value in $theme-colors {
$list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);
$list-group-variant-color: shift-color($value, $list-group-item-color-scale);
@if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {
$list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));
}
@include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
}
Chování JavaScriptu
Použijte zásuvný modul JavaScriptu na kartě – zahrňte jej jednotlivě nebo prostřednictvím zkompilovaného bootstrap.js
souboru – k rozšíření naší skupiny seznamů o vytváření panelů místního obsahu s tabelovanými panely.
<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-bs-toggle="list" href="#list-home" role="tab" aria-controls="list-home">Home</a>
<a class="list-group-item list-group-item-action" id="list-profile-list" data-bs-toggle="list" href="#list-profile" role="tab" aria-controls="list-profile">Profile</a>
<a class="list-group-item list-group-item-action" id="list-messages-list" data-bs-toggle="list" href="#list-messages" role="tab" aria-controls="list-messages">Messages</a>
<a class="list-group-item list-group-item-action" id="list-settings-list" data-bs-toggle="list" href="#list-settings" role="tab" aria-controls="list-settings">Settings</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>
Použití atributů dat
Navigaci skupiny seznamů můžete aktivovat bez psaní JavaScriptu pouhým zadáním data-bs-toggle="list"
prvku nebo na prvku. Použijte tyto atributy dat na .list-group-item
.
<div role="tabpanel">
<!-- List group -->
<div class="list-group" id="myList" role="tablist">
<a class="list-group-item list-group-item-action active" data-bs-toggle="list" href="#home" role="tab">Home</a>
<a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#profile" role="tab">Profile</a>
<a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#messages" role="tab">Messages</a>
<a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#settings" role="tab">Settings</a>
</div>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="home" role="tabpanel">...</div>
<div class="tab-pane" id="profile" role="tabpanel">...</div>
<div class="tab-pane" id="messages" role="tabpanel">...</div>
<div class="tab-pane" id="settings" role="tabpanel">...</div>
</div>
</div>
Prostřednictvím JavaScriptu
Povolit tabelovatelnou položku seznamu pomocí JavaScriptu (každou položku seznamu je třeba aktivovat samostatně):
var triggerTabList = [].slice.call(document.querySelectorAll('#myTab a'))
triggerTabList.forEach(function (triggerEl) {
var tabTrigger = new bootstrap.Tab(triggerEl)
triggerEl.addEventListener('click', function (event) {
event.preventDefault()
tabTrigger.show()
})
})
Jednotlivé položky seznamu můžete aktivovat několika způsoby:
var triggerEl = document.querySelector('#myTab a[href="#profile"]')
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
var triggerFirstTabEl = document.querySelector('#myTab li:first-child a')
bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab
Efekt vyblednutí
Chcete-li, aby panel karet vybledl, přidejte .fade
ke každému .tab-pane
. První panel karet musí také .show
zviditelnit počáteční obsah.
<div class="tab-content">
<div class="tab-pane fade show active" id="home" role="tabpanel">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel">...</div>
<div class="tab-pane fade" id="messages" role="tabpanel">...</div>
<div class="tab-pane fade" id="settings" role="tabpanel">...</div>
</div>
Metody
constructor
Aktivuje prvek položky seznamu a kontejner obsahu. Karta by měla mít buď a data-bs-target
nebo href
cílící na uzel kontejneru v modelu DOM.
<div class="list-group" id="myList" role="tablist">
<a class="list-group-item list-group-item-action active" data-bs-toggle="list" href="#home" role="tab">Home</a>
<a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#profile" role="tab">Profile</a>
<a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#messages" role="tab">Messages</a>
<a class="list-group-item list-group-item-action" data-bs-toggle="list" href="#settings" role="tab">Settings</a>
</div>
<div class="tab-content">
<div class="tab-pane active" id="home" role="tabpanel">...</div>
<div class="tab-pane" id="profile" role="tabpanel">...</div>
<div class="tab-pane" id="messages" role="tabpanel">...</div>
<div class="tab-pane" id="settings" role="tabpanel">...</div>
</div>
<script>
var firstTabEl = document.querySelector('#myTab a:last-child')
var firstTab = new bootstrap.Tab(firstTabEl)
firstTab.show()
</script>
show
Vybere danou položku seznamu a zobrazí související panel. Jakákoli jiná položka seznamu, která byla dříve vybrána, bude zrušena a její přidružené podokno bude skryté. Vrátí se k volajícímu dříve, než se panel karet skutečně zobrazí (například předtím, než dojde k shown.bs.tab
události).
var someListItemEl = document.querySelector('#someListItem')
var tab = new bootstrap.Tab(someListItemEl)
tab.show()
dispose
Zničí záložku prvku.
getInstance
Statická metoda, která vám umožní získat instanci karty přidruženou k prvku DOM
var triggerEl = document.querySelector('#trigger')
var tab = bootstrap.Tab.getInstance(triggerEl) // Returns a Bootstrap tab instance
getOrCreateInstance
Statická metoda, která vám umožní získat instanci karty přidruženou k prvku DOM nebo vytvořit novou v případě, že nebyla inicializována
var triggerEl = document.querySelector('#trigger')
var tab = bootstrap.Tab.getOrCreateInstance(triggerEl) // Returns a Bootstrap tab instance
Události
Při zobrazení nové karty se události spustí v následujícím pořadí:
hide.bs.tab
(na aktuální aktivní kartě)show.bs.tab
(na kartě k zobrazení)hidden.bs.tab
(na předchozí aktivní záložce, stejné jako uhide.bs.tab
události)shown.bs.tab
(na nově aktivní právě zobrazené záložce, stejné jako ushow.bs.tab
události)
Pokud ještě nebyla aktivní žádná karta, události hide.bs.tab
a hidden.bs.tab
se nespustí.
Typ události | Popis |
---|---|
show.bs.tab |
Tato událost se spustí při zobrazení karty, ale předtím, než se zobrazí nová karta. Pomocí event.target a event.relatedTarget můžete cílit na aktivní kartu a na předchozí aktivní kartu (pokud je k dispozici). |
shown.bs.tab |
Tato událost se spustí při zobrazení karty po zobrazení karty. Pomocí event.target a event.relatedTarget můžete cílit na aktivní kartu a na předchozí aktivní kartu (pokud je k dispozici). |
hide.bs.tab |
Tato událost se spustí, když se má zobrazit nová karta (a tedy předchozí aktivní karta má být skryta). Pomocí event.target a event.relatedTarget můžete cílit na aktuální aktivní kartu a na novou kartu, která bude brzy aktivní. |
hidden.bs.tab |
Tato událost se spustí po zobrazení nové karty (a tedy předchozí aktivní karta je skryta). Pomocí event.target a event.relatedTarget můžete cílit na předchozí aktivní kartu a na novou aktivní kartu. |
var tabElms = document.querySelectorAll('a[data-bs-toggle="list"]')
tabElms.forEach(function(tabElm) {
tabElm.addEventListener('shown.bs.tab', function (event) {
event.target // newly activated tab
event.relatedTarget // previous active tab
})
}