Nav og faner
Dokumentasjon og eksempler for hvordan du bruker Bootstraps medfølgende navigasjonskomponenter.
Basenav
Navigering tilgjengelig i Bootstrap deler generell markering og stiler, fra .nav
basisklassen til de aktive og deaktiverte tilstandene. Bytt modifikatorklasser for å bytte mellom hver stil.
Basekomponenten .nav
er bygget med flexbox og gir et sterkt grunnlag for å bygge alle typer navigasjonskomponenter. Den inkluderer noen stiloverstyringer (for å jobbe med lister), noe lenkepolstring for større treffområder og grunnleggende funksjonshemmede styling.
Basiskomponenten .nav
inkluderer ingen .active
tilstand. Følgende eksempler inkluderer klassen, hovedsakelig for å demonstrere at denne spesielle klassen ikke utløser noen spesiell styling.
For å formidle den aktive tilstanden til hjelpeteknologier, bruk aria-current
attributtet – bruk page
verdien for gjeldende side, eller true
for gjeldende element i et sett.
<ul class="nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Klassene brukes hele veien, så merkingen din kan være superfleksibel. Bruk <ul>
s som ovenfor, <ol>
hvis rekkefølgen på varene dine er viktig, eller rull din egen med et <nav>
element. Fordi .nav
brukerne display: flex
oppfører seg på samme måte som nav-elementer, men uten den ekstra markeringen.
<nav class="nav">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
Tilgjengelige stiler
Endre stilen til .nav
s-komponenten med modifikatorer og verktøy. Miks og match etter behov, eller bygg din egen.
Horisontal justering
Endre den horisontale justeringen av nav med flexbox-verktøy . Som standard er nav-er venstrejustert, men du kan enkelt endre dem til midt- eller høyrejustert.
Sentrert med .justify-content-center
:
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Høyrejustert med .justify-content-end
:
<ul class="nav justify-content-end">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Vertikal
Stable navigasjonen ved å endre retningen på flexelementet med .flex-column
verktøyet. Trenger du å stable dem på noen visningsporter, men ikke andre? Bruk de responsive versjonene (f.eks. .flex-sm-column
).
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Som alltid er vertikal navigering også mulig uten <ul>
s.
<nav class="nav flex-column">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
Faner
Tar den grunnleggende navigasjonen ovenfra og legger til .nav-tabs
klassen for å generere et fanebasert grensesnitt. Bruk dem til å lage tabellområder med JavaScript-plugin-modulen vår .
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Piller
Ta den samme HTML-en, men bruk .nav-pills
i stedet:
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Fyll ut og begrunn
Tving .nav
innholdet ditt til å utvide den fulle tilgjengelige bredden en av to modifikasjonsklasser. For å fylle all tilgjengelig plass proporsjonalt med dine .nav-item
s, bruk .nav-fill
. Legg merke til at all horisontal plass er opptatt, men ikke alle nav-elementer har samme bredde.
<ul class="nav nav-pills nav-fill">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Much longer nav link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Når du bruker en <nav>
-basert navigasjon, kan du trygt utelate .nav-item
siden det kun .nav-link
kreves for stylingelementer <a>
.
<nav class="nav nav-pills nav-fill">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Much longer nav link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
For elementer med lik bredde, bruk .nav-justified
. All horisontal plass vil bli okkupert av nav-lenker, men i motsetning til .nav-fill
ovennevnte vil hvert nav-element ha samme bredde.
<ul class="nav nav-pills nav-justified">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Much longer nav link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Ligner på .nav-fill
eksempelet med en <nav>
-basert navigasjon.
<nav class="nav nav-pills nav-justified">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Much longer nav link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
Jobber med flexverktøy
Hvis du trenger responsive nav-varianter, bør du vurdere å bruke en rekke flexbox-verktøy . Selv om de er mer detaljerte, tilbyr disse verktøyene større tilpasning på tvers av responsive bruddpunkter. I eksemplet nedenfor vil nav-en vår bli stablet på det laveste bruddpunktet, og deretter tilpasses det til en horisontal layout som fyller den tilgjengelige bredden fra det lille bruddpunktet.
<nav class="nav nav-pills flex-column flex-sm-row">
<a class="flex-sm-fill text-sm-center nav-link active" aria-current="page" href="#">Active</a>
<a class="flex-sm-fill text-sm-center nav-link" href="#">Longer nav link</a>
<a class="flex-sm-fill text-sm-center nav-link" href="#">Link</a>
<a class="flex-sm-fill text-sm-center nav-link disabled">Disabled</a>
</nav>
Angående tilgjengelighet
Hvis du bruker nav for å gi en navigasjonslinje, må du sørge for å legge til en role="navigation"
i den mest logiske overordnede beholderen til <ul>
, eller omslutte et <nav>
element rundt hele navigasjonen. Ikke legg rollen til seg <ul>
selv, da dette vil forhindre at den blir annonsert som en faktisk liste av hjelpeteknologier.
Merk at navigasjonslinjer, selv om de er visuelt stilte som faner med .nav-tabs
klassen, ikke skal gis role="tablist"
, role="tab"
eller role="tabpanel"
attributter. Disse er kun egnet for dynamiske fanebaserte grensesnitt, som beskrevet i ARIA Authoring Practices Guide-fanemønsteret . Se JavaScript-atferd for dynamiske fanebaserte grensesnitt i denne delen for et eksempel. aria-current
Attributtet er ikke nødvendig på dynamiske fanegrensesnitt siden vår JavaScript håndterer den valgte tilstanden ved å legge til på aria-selected="true"
den aktive fanen.
Bruker rullegardinmenyene
Legg til rullegardinmenyer med litt ekstra HTML og JavaScript-plugin-modulen .
Faner med rullegardiner
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
Piller med dropdowns
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
CSS
Variabler
Lagt til i v5.2.0Som en del av Bootstraps utviklende CSS-variabletilnærming, bruker navs nå lokale CSS-variabler på .nav
, .nav-tabs
, og .nav-pills
for forbedret sanntidstilpasning. Verdier for CSS-variablene settes via Sass, så Sass-tilpasning støttes fortsatt også.
På .nav
basisklassen:
--#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};
--#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
@include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
--#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
--#{$prefix}nav-link-color: #{$nav-link-color};
--#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
--#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
På .nav-tabs
modifikatorklassen:
--#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
--#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
--#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
--#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
--#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
--#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
--#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
På .nav-pills
modifikatorklassen:
--#{$prefix}nav-pills-border-radius: #{$nav-pills-border-radius};
--#{$prefix}nav-pills-link-active-color: #{$nav-pills-link-active-color};
--#{$prefix}nav-pills-link-active-bg: #{$nav-pills-link-active-bg};
Sass variabler
$nav-link-padding-y: .5rem;
$nav-link-padding-x: 1rem;
$nav-link-font-size: null;
$nav-link-font-weight: null;
$nav-link-color: var(--#{$prefix}link-color);
$nav-link-hover-color: var(--#{$prefix}link-hover-color);
$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out;
$nav-link-disabled-color: $gray-600;
$nav-tabs-border-color: $gray-300;
$nav-tabs-border-width: $border-width;
$nav-tabs-border-radius: $border-radius;
$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color;
$nav-tabs-link-active-color: $gray-700;
$nav-tabs-link-active-bg: $body-bg;
$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg;
$nav-pills-border-radius: $border-radius;
$nav-pills-link-active-color: $component-active-color;
$nav-pills-link-active-bg: $component-active-bg;
JavaScript-adferd
Bruk JavaScript-plugin-fanen – inkluder den individuelt eller gjennom den kompilerte bootstrap.js
filen – for å utvide våre navigasjonsfaner og piller for å lage tabulatorer med lokalt innhold.
Dette er noe plassholderinnhold på Hjem-fanens tilknyttede innhold. Hvis du klikker på en annen fane, endres synligheten til denne for den neste. Fanen JavaScript bytter klasser for å kontrollere innholdets synlighet og stil. Du kan bruke den med faner, piller og annen .nav
drevet navigasjon.
This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Disabled tab's associated content.
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-tab-pane" type="button" role="tab" aria-controls="profile-tab-pane" aria-selected="false">Profile</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Contact</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="disabled-tab" data-bs-toggle="tab" data-bs-target="#disabled-tab-pane" type="button" role="tab" aria-controls="disabled-tab-pane" aria-selected="false" disabled>Disabled</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="profile-tab-pane" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="contact-tab-pane" role="tabpanel" aria-labelledby="contact-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="disabled-tab-pane" role="tabpanel" aria-labelledby="disabled-tab" tabindex="0">...</div>
</div>
For å hjelpe deg med å dekke dine behov, fungerer dette med <ul>
-basert markering, som vist ovenfor, eller med en hvilken som helst vilkårlig "rull din egen" markering. Vær oppmerksom på at hvis du bruker <nav>
, bør du ikke legge role="tablist"
direkte til den, da dette vil overstyre elementets opprinnelige rolle som navigasjonslandemerke. Bytt i stedet til et alternativt element (i eksemplet nedenfor, en enkel <div>
) og vikle <nav>
rundt det.
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<button class="nav-link active" id="nav-home-tab" data-bs-toggle="tab" data-bs-target="#nav-home" type="button" role="tab" aria-controls="nav-home" aria-selected="true">Home</button>
<button class="nav-link" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#nav-profile" type="button" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</button>
<button class="nav-link" id="nav-contact-tab" data-bs-toggle="tab" data-bs-target="#nav-contact" type="button" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</button>
<button class="nav-link" id="nav-disabled-tab" data-bs-toggle="tab" data-bs-target="#nav-disabled" type="button" role="tab" aria-controls="nav-disabled" aria-selected="false" disabled>Disabled</button>
</div>
</nav>
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="nav-disabled" role="tabpanel" aria-labelledby="nav-disabled-tab" tabindex="0">...</div>
</div>
Tabs-pluginen fungerer også med piller.
Dette er noe plassholderinnhold på Hjem-fanens tilknyttede innhold. Hvis du klikker på en annen fane, endres synligheten til denne for den neste. Fanen JavaScript bytter klasser for å kontrollere innholdets synlighet og stil. Du kan bruke den med faner, piller og annen .nav
drevet navigasjon.
This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Disabled tab's associated content.
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="pills-home-tab" data-bs-toggle="pill" data-bs-target="#pills-home" type="button" role="tab" aria-controls="pills-home" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-profile-tab" data-bs-toggle="pill" data-bs-target="#pills-profile" type="button" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" data-bs-target="#pills-contact" type="button" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#pills-disabled" type="button" role="tab" aria-controls="pills-disabled" aria-selected="false" disabled>Disabled</button>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="pills-disabled" role="tabpanel" aria-labelledby="pills-disabled-tab" tabindex="0">...</div>
</div>
Og med vertikale piller. Ideelt sett, for vertikale faner, bør du også legge aria-orientation="vertical"
til i fanelistebeholderen.
Dette er noe plassholderinnhold på Hjem-fanens tilknyttede innhold. Hvis du klikker på en annen fane, endres synligheten til denne for den neste. Fanen JavaScript bytter klasser for å kontrollere innholdets synlighet og stil. Du kan bruke den med faner, piller og annen .nav
drevet navigasjon.
This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Disabled tab's associated content.
This is some placeholder content the Messages tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Settings tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
<div class="d-flex align-items-start">
<div class="nav flex-column nav-pills me-3" id="v-pills-tab" role="tablist" aria-orientation="vertical">
<button class="nav-link active" id="v-pills-home-tab" data-bs-toggle="pill" data-bs-target="#v-pills-home" type="button" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</button>
<button class="nav-link" id="v-pills-profile-tab" data-bs-toggle="pill" data-bs-target="#v-pills-profile" type="button" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</button>
<button class="nav-link" id="v-pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#v-pills-disabled" type="button" role="tab" aria-controls="v-pills-disabled" aria-selected="false" disabled>Disabled</button>
<button class="nav-link" id="v-pills-messages-tab" data-bs-toggle="pill" data-bs-target="#v-pills-messages" type="button" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</button>
<button class="nav-link" id="v-pills-settings-tab" data-bs-toggle="pill" data-bs-target="#v-pills-settings" type="button" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</button>
</div>
<div class="tab-content" id="v-pills-tabContent">
<div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-disabled" role="tabpanel" aria-labelledby="v-pills-disabled-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab" tabindex="0">...</div>
</div>
</div>
tilgjengelighet
Dynamiske fanegrensesnitt, som beskrevet i ARIA Authoring Practices Guide-fanemønsteret , krever role="tablist"
, role="tab"
, role="tabpanel"
, og tilleggsattributter aria-
for å formidle deres struktur, funksjonalitet og nåværende tilstand til brukere av hjelpeteknologier (som skjermlesere). Som en beste praksis anbefaler vi å bruke <button>
elementer for fanene, siden disse er kontroller som utløser en dynamisk endring, i stedet for linker som navigerer til en ny side eller plassering.
I tråd med ARIA Authoring Practices-mønsteret er det bare den aktive fanen som mottar tastaturfokus. Når JavaScript-pluginen er initialisert, vil den settes tabindex="-1"
på alle inaktive fanekontroller. Når den aktive fanen har fokus, aktiverer markørtastene forrige/neste fane, med plugin-en som endrer rovingtabindex
tilsvarende. Vær imidlertid oppmerksom på at JavaScript-pluginen ikke skiller mellom horisontale og vertikale fanelister når det gjelder markørtastinteraksjoner: uavhengig av fanelistens orientering, går både opp- og venstremarkøren til forrige fane, og ned- og høyremarkøren går til neste fane.
tabindex="0"
til markeringen din.
Bruke dataattributter
Du kan aktivere en fane- eller pillenavigasjon uten å skrive noe JavaScript ved å spesifisere data-bs-toggle="tab"
eller data-bs-toggle="pill"
på et element. Bruk disse dataattributtene på .nav-tabs
eller .nav-pills
.
<!-- Nav tabs -->
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="messages-tab" data-bs-toggle="tab" data-bs-target="#messages" type="button" role="tab" aria-controls="messages" aria-selected="false">Messages</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="settings-tab" data-bs-toggle="tab" data-bs-target="#settings" type="button" role="tab" aria-controls="settings" aria-selected="false">Settings</button>
</li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
<div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
<div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
<div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
</div>
Via JavaScript
Aktiver tabbare faner via JavaScript (hver fane må aktiveres individuelt):
const triggerTabList = document.querySelectorAll('#myTab button')
triggerTabList.forEach(triggerEl => {
const tabTrigger = new bootstrap.Tab(triggerEl)
triggerEl.addEventListener('click', event => {
event.preventDefault()
tabTrigger.show()
})
})
Du kan aktivere individuelle faner på flere måter:
const triggerEl = document.querySelector('#myTab button[data-bs-target="#profile"]')
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
const triggerFirstTabEl = document.querySelector('#myTab li:first-child button')
bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab
Fade-effekt
For å få faner til å tone inn, legg .fade
til i hver .tab-pane
. Den første faneruten må også .show
gjøre det opprinnelige innholdet synlig.
<div class="tab-content">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
</div>
Metoder
Asynkrone metoder og overganger
Alle API-metoder er asynkrone og starter en overgang . De går tilbake til den som ringer så snart overgangen er startet, men før den avsluttes . I tillegg vil et metodekall på en overgangskomponent bli ignorert .
Aktiverer innholdet ditt som et faneelement.
Du kan opprette en tabulatorforekomst med konstruktøren, for eksempel:
const bsTab = new bootstrap.Tab('#myTab')
Metode | Beskrivelse |
---|---|
dispose |
Ødelegger et elements fane. |
getInstance |
Statisk metode som lar deg få tabulatorforekomsten knyttet til et DOM-element, du kan bruke den slik: bootstrap.Tab.getInstance(element) . |
getOrCreateInstance |
Statisk metode som returnerer en tabulatorforekomst knyttet til et DOM-element eller oppretter en ny i tilfelle den ikke ble initialisert. Du kan bruke det slik: bootstrap.Tab.getOrCreateInstance(element) . |
show |
Velger den gitte fanen og viser den tilhørende ruten. Enhver annen fane som tidligere ble valgt blir opphevet og den tilhørende ruten er skjult. Går tilbake til den som ringer før faneruten faktisk har blitt vist (dvs. før shown.bs.tab hendelsen inntreffer). |
arrangementer
Når du viser en ny fane, utløses hendelsene i følgende rekkefølge:
hide.bs.tab
(på gjeldende aktive fane)show.bs.tab
(på fanen som skal vises)hidden.bs.tab
(på den forrige aktive fanen, den samme som forhide.bs.tab
arrangementet)shown.bs.tab
(på den nylig aktive fanen som nettopp er vist, den samme som forshow.bs.tab
arrangementet)
Hvis ingen fane allerede var aktiv, vil ikke hide.bs.tab
og hidden.bs.tab
-hendelsene bli utløst.
Hendelsestype | Beskrivelse |
---|---|
hide.bs.tab |
Denne hendelsen utløses når en ny fane skal vises (og dermed skal den forrige aktive fanen skjules). Bruk event.target og event.relatedTarget for å målrette henholdsvis den gjeldende aktive fanen og den nye snart-aktive fanen. |
hidden.bs.tab |
Denne hendelsen utløses etter at en ny fane vises (og dermed er den forrige aktive fanen skjult). Bruk event.target og event.relatedTarget for å målrette henholdsvis den forrige aktive fanen og den nye aktive fanen. |
show.bs.tab |
Denne hendelsen utløses på fanevisning, men før den nye fanen har blitt vist. Bruk event.target og event.relatedTarget for å målrette henholdsvis den aktive fanen og den forrige aktive fanen (hvis tilgjengelig). |
shown.bs.tab |
Denne hendelsen utløses på fanevisning etter at en fane er vist. Bruk event.target og event.relatedTarget for å målrette henholdsvis den aktive fanen og den forrige aktive fanen (hvis tilgjengelig). |
const tabEl = document.querySelector('button[data-bs-toggle="tab"]')
tabEl.addEventListener('shown.bs.tab', event => {
event.target // newly activated tab
event.relatedTarget // previous active tab
})