Navs
Documentație și exemple pentru utilizarea componentelor de navigare incluse în Bootstrap.
Navigarea disponibilă în Bootstrap partajează markup și stiluri generale, de la .nav
clasa de bază până la stările active și dezactivate. Schimbați clasele modificatoare pentru a comuta între fiecare stil.
Componenta de bază .nav
este construită cu flexbox și oferă o bază solidă pentru construirea tuturor tipurilor de componente de navigație. Include unele înlocuiri de stil (pentru lucrul cu liste), unele link-up padding pentru zone de acces mai mari și stil de bază dezactivat.
Componenta de bază .nav
nu include nicio .active
stare. Următoarele exemple includ clasa, în principal pentru a demonstra că această clasă particulară nu declanșează niciun stil special.
<ul class="nav">
<li class="nav-item">
<a class="nav-link active" 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" href="#">Disabled</a>
</li>
</ul>
Clasele sunt folosite pe tot parcursul, astfel încât marcajul poate fi foarte flexibil. Folosiți <ul>
s ca mai sus sau rulați-vă propriul cu un <nav>
element, să spunem. Deoarece .nav
folosește display: flex
, linkurile de navigare se comportă la fel ca elementele de navigare, dar fără markup suplimentar.
<nav class="nav">
<a class="nav-link active" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled" href="#">Disabled</a>
</nav>
Schimbați stilul .nav
componentei s cu modificatori și utilitare. Amestecați și potriviți după cum este necesar sau construiți-vă propriul dvs.
Schimbați alinierea orizontală a navigației dvs. cu utilitarele Flexbox . În mod implicit, navigațiile sunt aliniate la stânga, dar le puteți schimba cu ușurință la centru sau la dreapta.
Centrat cu .justify-content-center
:
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" 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" href="#">Disabled</a>
</li>
</ul>
Aliniat la dreapta cu .justify-content-end
:
<ul class="nav justify-content-end">
<li class="nav-item">
<a class="nav-link active" 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" href="#">Disabled</a>
</li>
</ul>
Stivuiți-vă navigarea schimbând direcția elementului flexibil cu .flex-column
utilitarul. Trebuie să le stivuiți pe unele ferestre, dar nu pe altele? Utilizați versiunile receptive (de exemplu, .flex-sm-column
).
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" 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" href="#">Disabled</a>
</li>
</ul>
Ca întotdeauna, navigarea verticală este posibilă și fără <ul>
s.
<nav class="nav flex-column">
<a class="nav-link active" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled" href="#">Disabled</a>
</nav>
Preia navigarea de bază de sus și adaugă .nav-tabs
clasa pentru a genera o interfață cu file. Folosiți-le pentru a crea regiuni tabulabile cu pluginul nostru JavaScript pentru fila .
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" 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" href="#">Disabled</a>
</li>
</ul>
Luați același HTML, dar folosiți .nav-pills
în schimb:
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" 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" href="#">Disabled</a>
</li>
</ul>
Forțați .nav
conținutul dvs. să extindă întreaga lățime disponibilă una dintre cele două clase de modificatori. Pentru a umple proporțional tot spațiul disponibil cu .nav-item
e-urile dvs., utilizați .nav-fill
. Observați că tot spațiul orizontal este ocupat, dar nu fiecare element de navigare are aceeași lățime.
<ul class="nav nav-pills nav-fill">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">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" href="#">Disabled</a>
</li>
</ul>
Când utilizați o <nav>
navigare bazată pe -, asigurați-vă că includeți .nav-item
pe ancore.
<nav class="nav nav-pills nav-fill">
<a class="nav-item nav-link active" href="#">Active</a>
<a class="nav-item nav-link" href="#">Link</a>
<a class="nav-item nav-link" href="#">Link</a>
<a class="nav-item nav-link disabled" href="#">Disabled</a>
</nav>
Pentru elemente de lățime egală, utilizați .nav-justified
. Tot spațiul orizontal va fi ocupat de legături de navigare, dar spre deosebire de cele de .nav-fill
mai sus, fiecare element de navigare va avea aceeași lățime.
<nav class="nav nav-pills nav-justified">
<a class="nav-link active" href="#">Active</a>
<a class="nav-link" href="#">Longer nav link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled" href="#">Disabled</a>
</nav>
Similar cu .nav-fill
exemplul folosind o <nav>
navigare bazată pe -, asigurați-vă că includeți .nav-item
pe ancore.
<nav class="nav nav-pills nav-justified">
<a class="nav-item nav-link active" href="#">Active</a>
<a class="nav-item nav-link" href="#">Link</a>
<a class="nav-item nav-link" href="#">Link</a>
<a class="nav-item nav-link disabled" href="#">Disabled</a>
</nav>
Dacă aveți nevoie de variații de navigare receptive, luați în considerare utilizarea unei serii de utilitare flexbox . Deși sunt mai detaliate, aceste utilitare oferă o personalizare mai mare în punctele de întrerupere receptive. În exemplul de mai jos, navigația noastră va fi stivuită pe cel mai jos punct de întrerupere, apoi se va adapta la un aspect orizontal care umple lățimea disponibilă începând de la punctul mic de întrerupere.
<nav class="nav nav-pills flex-column flex-sm-row">
<a class="flex-sm-fill text-sm-center nav-link active" href="#">Active</a>
<a class="flex-sm-fill text-sm-center nav-link" href="#">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" href="#">Disabled</a>
</nav>
Dacă utilizați navs pentru a oferi o bară de navigare, asigurați-vă că adăugați o role="navigation"
la cel mai logic container părinte al <ul>
fișierului , sau includeți un <nav>
element în întreaga navigare. Nu adăugați rolul în <ul>
sine, deoarece acest lucru ar împiedica să fie anunțat ca o listă reală de către tehnologiile de asistență.
Rețineți că barele de navigare, chiar dacă sunt stilate vizual ca file cu .nav-tabs
clasa, nu ar trebui să aibă role="tablist"
, role="tab"
sau role="tabpanel"
atribute. Acestea sunt adecvate numai pentru interfețele cu file dinamice, așa cum este descris în Practicile de creație WAI ARIA . Consultați comportamentul JavaScript pentru interfețele dinamice cu file în această secțiune pentru un exemplu.
Adăugați meniuri derulante cu puțin HTML suplimentar și pluginul JavaScript pentru meniuri derulante .
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
Folosiți pluginul JavaScript pentru filă - includeți-l individual sau prin bootstrap.js
fișierul compilat - pentru a extinde filele și pastilele noastre de navigare pentru a crea panouri tabulabile de conținut local, chiar și prin meniuri drop-down.
Dacă construiți JavaScript din sursă, este nevoieutil.js
de .
Interfețele dinamice cu file, așa cum sunt descrise în Practicile de creație WAI ARIA , necesită atribute role="tablist"
, role="tab"
, role="tabpanel"
, și suplimentare aria-
pentru a le transmite structura, funcționalitatea și starea actuală utilizatorilor tehnologiilor de asistență (cum ar fi cititoarele de ecran).
Rețineți că interfețele cu file dinamice nu ar trebui să conțină meniuri drop-down, deoarece acest lucru cauzează atât probleme de utilizare, cât și de accesibilitate. Din punct de vedere al utilizării, faptul că elementul de declanșare al filei afișate în prezent nu este vizibil imediat (deoarece se află în meniul derulant închis) poate provoca confuzie. Din punct de vedere al accesibilității, în prezent nu există o modalitate sensibilă de a mapa acest tip de construct la un model WAI ARIA standard, ceea ce înseamnă că nu poate fi ușor de înțeles pentru utilizatorii tehnologiilor de asistență.
Denim brut probabil că nu ați auzit de ei pantaloni scurți de blugi Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Pulover Cosby eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.
Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.
Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.
Pentru a vă potrivi nevoilor, acesta funcționează cu <ul>
marcajul bazat pe -, așa cum se arată mai sus, sau cu orice marcaj arbitrar „roll your own”. Rețineți că, dacă utilizați <nav>
, nu ar trebui să adăugați role="tablist"
direct la acesta, deoarece aceasta ar înlocui rolul nativ al elementului ca reper de navigare. În schimb, treceți la un element alternativ (în exemplul de mai jos, un simplu <div>
) și înfășurați- <nav>
l.
Pluginul tabs funcționează și cu pastile.
Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt este doi ani sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud.
Ad pariatur nostrud pariatur exercitation ipsum ipsum culpa mollit commodo mollit ex. Aute sunt incididunt amet commodo est sint nisi deserunt pariatur do. Aliquip ex eiusmod voluptate exercitation cillum id incididunt elit sunt. Qui minim sit magna Lorem id et dolore velit Lorem amet exercitation duis deserunt. Anim id labore elit adipisicing ut in id occaecat pariatur ut ullamco ea tempor duis.
Est quis nulla laborum officia ad nisi ex nostrud culpa Lorem excepteur aliquip dolor aliqua irure ex. Nulla ut duis ipsum nisi elit fugiat commodo sunt reprehenderit laborum veniam eu veniam. Eiusmod minim exercitation fugiat irure ex labore incididunt do fugiat commodo aliquip sit id deserunt reprehenderit aliquip nostrud. Amet ex cupidatat excepteur aute veniam incididunt mollit cupidatat esse irure officia elit do ipsum ullamco Lorem. Ullamco ut ad minim do mollit labore ipsum laboris ipsum commodo sunt tempor enim incididunt. Commodo quis sunt dolore aliquip aute tempor irure magna enim minim reprehenderit. Ullamco consectetur culpa veniam sint cillum aliqua incididunt velit ullamco sunt ullamco quis quis commodo voluptate. Mollit nulla nostrud adipisicing aliqua cupidatat aliqua pariatur mollit voluptate voluptate consequat non.
Și cu pastile verticale.
Cillum ad ut irure tempor velit nostrud occaecat ullamco aliqua anim Lorem sint. Veniam sint dus incididunt do esse magna mollit excepteur laborum qui. Id id reprehenderit sit est eu aliqua occaecat quis et velit excepteur laborum mollit dolore eiusmod. Ipsum dolor in occaecat commodo et voluptate minim reprehenderit mollit pariatur. Deserunt non laborum enim et cillum eu deserunt excepteur ea incididunt minim occaecat.
Culpa dolor voluptate do laboris laboris irure reprehenderit id incididunt duis pariatur mollit aute magna pariatur consectetur. Eu veniam duis non ut dolor deserunt commodo et minim in quis laboris ipsum velit id veniam. Quis ut consectetur adipisicing officia excepteur non sit. Ut et elit aliquip labore Lorem enim eu. Ullamco mollit occaecat dolore ipsum id officia mollit qui esse anim eiusmod do sint minim consectetur qui.
Fugiat id quis dolor culpa eiusmod anim velit excepteur proident dolor aute qui magna. Ad proident laboris ullamco esse anim Lorem Lorem veniam quis Lorem irure occaecat velit nostrud magna nulla. Velit et et proident Lorem do ea tempor officia dolor. Reprehenderit Lorem aliquip labore est magna commodo est ea veniam consectetur.
Eu dolore ea ullamco dolore Lorem id cupidatat excepteur reprehenderit consectetur elit id dolor proident in cupidatat officia. Voluptate excepteur commodo labore nisi cillum duis aliqua do. Aliqua amet qui mollit consectetur nulla mollit velit aliqua veniam nisi id do Lorem deserunt amet. Culpa ullamco sit adipisicing labore officia magna elit nisi in aute tempor commodo eiusmod.
Puteți activa o filă sau o navigare prin pilule fără a scrie JavaScript, prin simpla specificare data-toggle="tab"
sau data-toggle="pill"
pe un element. Utilizați aceste atribute de date pe .nav-tabs
sau .nav-pills
.
Activați filele tabulabile prin JavaScript (fiecare filă trebuie activată individual):
Puteți activa file individuale în mai multe moduri:
Pentru ca filele să dispară, adăugați .fade
la fiecare .tab-pane
. De asemenea, primul panou de file trebuie .show
să facă vizibil conținutul inițial.
Metode și tranziții asincrone
Toate metodele API sunt asincrone și încep o tranziție . Ei revin la apelant imediat ce tranziția este începută, dar înainte ca aceasta să se încheie . În plus, un apel de metodă pentru o componentă de tranziție va fi ignorat .
Consultați documentația noastră JavaScript pentru mai multe informații.
Activează un element de filă și un container de conținut. Tab ar trebui să aibă fie un, fie un data-target
nod href
de container în DOM.
Selectează fila dată și arată panoul asociat. Orice altă filă care a fost selectată anterior devine neselectată, iar panoul asociat este ascuns. Revine la apelant înainte ca panoul de file să fie afișat efectiv (adică înainte de apariția shown.bs.tab
evenimentului).
Distruge fila unui element.
Când se afișează o filă nouă, evenimentele se declanșează în următoarea ordine:
hide.bs.tab
(în fila activă curentă)show.bs.tab
(pe fila de afișat)hidden.bs.tab
(pe fila activă anterioară, aceeași ca pentruhide.bs.tab
eveniment)shown.bs.tab
(în fila nou-activă tocmai afișată, aceeași ca și pentrushow.bs.tab
eveniment)
Dacă nicio filă nu era deja activă, atunci evenimentele hide.bs.tab
și hidden.bs.tab
nu vor fi declanșate.
Tip de eveniment | Descriere |
---|---|
arată.bs.tab | Acest eveniment se declanșează în afișarea filelor, dar înainte ca noua filă să fie afișată. Utilizați event.target și event.relatedTarget pentru a viza fila activă și, respectiv, fila activă anterioară (dacă este disponibilă). |
afișat.bs.tab | Acest eveniment se declanșează în afișarea filelor după ce a fost afișată o filă. Utilizați event.target și event.relatedTarget pentru a viza fila activă și, respectiv, fila activă anterioară (dacă este disponibilă). |
ascunde.bs.tab | Acest eveniment se declanșează atunci când trebuie afișată o filă nouă (și astfel fila activă anterioară trebuie să fie ascunsă). Utilizați event.target și event.relatedTarget pentru a viza fila activă curentă și, respectiv, noua filă care va fi activă în curând. |
ascuns.bs.tab | Acest eveniment se declanșează după ce este afișată o nouă filă (și astfel fila activă anterioară este ascunsă). Utilizați event.target și event.relatedTarget pentru a viza fila activă anterioară și, respectiv, noua filă activă. |