導航
有關如何使用 Bootstrap 包含的導航組件的文檔和示例。
Bootstrap 中可用的導航共享通用標記和样式,從基.nav
類到活動和禁用狀態。交換修飾符類以在每種樣式之間切換。
基礎.nav
組件使用 flexbox 構建,為構建所有類型的導航組件提供了堅實的基礎。它包括一些樣式覆蓋(用於處理列表)、一些針對較大點擊區域的鏈接填充以及基本的禁用樣式。
基本.nav
組件不包含任何.active
狀態。下面的例子包含了這個類,主要是為了說明這個特定的類不會觸發任何特殊的樣式。
<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>
類貫穿始終,因此您的標記可以非常靈活。像上面一樣使用s,或者使用一個元素<ul>
來滾動你自己的。<nav>
由於.nav
uses display: flex
,導航鏈接的行為與導航項目相同,但沒有額外的標記。
<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>
.nav
使用修飾符和實用程序更改 s 組件的樣式。根據需要混合和匹配,或構建自己的。
使用flexbox 實用程序更改導航的水平對齊方式。默認情況下,導航是左對齊的,但您可以輕鬆地將它們更改為居中或右對齊。
以 為中心.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>
右對齊.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>
.flex-column
通過使用該實用程序更改彈性項目方向來堆疊您的導航。需要將它們堆疊在某些視口上而不是其他視口上?使用響應式版本(例如,.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>
與往常一樣,垂直導航也可以不使用<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>
從上面獲取基本導航並添加.nav-tabs
類以生成選項卡式界面。通過我們的標籤 JavaScript 插件使用它們來創建可標籤區域。
<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>
採用相同的 HTML,但.nav-pills
改用:
<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>
強制您.nav
的內容擴展兩個修飾符類之一的完整可用寬度。要使用 s 按比例填充所有可用空間,請.nav-item
使用.nav-fill
. 請注意,所有水平空間都被佔用,但並非每個導航項都具有相同的寬度。
<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>
使用<nav>
基於 - 的導航時,請務必包含.nav-item
在錨點上。
<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>
對於等寬元素,使用.nav-justified
. 所有水平空間都將被導航鏈接佔用,但與.nav-fill
上述不同的是,每個導航項目的寬度都相同。
<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>
.nav-fill
與使用-based 導航的示例類似<nav>
,請務必包含.nav-item
在錨點上。
<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>
如果您需要響應式導航變化,請考慮使用一系列flexbox 實用程序。雖然更冗長,但這些實用程序提供了跨響應斷點的更大定制。在下面的示例中,我們的導航將堆疊在最低斷點上,然後適應水平佈局,從小斷點開始填充可用寬度。
<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>
如果您使用 navs 來提供導航欄,請務必將 a 添加role="navigation"
到 最符合邏輯的父容器中,或者在整個導航周圍<ul>
包裹一個元素。<nav>
不要將角色添加到<ul>
自身,因為這會阻止它被輔助技術宣佈為實際列表。
請注意,導航欄,即使在視覺上被設計為帶有.nav-tabs
類的選項卡,也不應該被賦予role="tablist"
,role="tab"
或role="tabpanel"
屬性。這些僅適用於動態選項卡式界面,如WAI ARIA創作實踐中所述。有關示例,請參閱本節中動態選項卡式界面的JavaScript 行為。
添加帶有一點額外 HTML 的下拉菜單和下拉 JavaScript 插件。
<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>
使用標籤 JavaScript 插件(單獨包含它或通過編譯bootstrap.js
文件包含它)來擴展我們的導航標籤和藥丸,以創建本地內容的可標籤窗格,甚至通過下拉菜單。
如果您從源代碼構建我們的 JavaScript,它需要util.js
.
如WAI ARIA Authoring Practices中所述,動態選項卡式界面需要role="tablist"
、role="tab"
、role="tabpanel"
和其他aria-
屬性,以便將其結構、功能和當前狀態傳達給輔助技術(例如屏幕閱讀器)的用戶。
請注意,動態選項卡式界面不應包含下拉菜單,因為這會導致可用性和可訪問性問題。從可用性的角度來看,當前顯示的選項卡的觸發元素不是立即可見的(因為它位於關閉的下拉菜單中)這一事實可能會導致混淆。從可訪問性的角度來看,目前還沒有明智的方法將這種結構映射到標準的 WAI ARIA 模式,這意味著輔助技術的用戶不容易理解它。
你可能沒聽說過奧斯汀牛仔短褲。Nesciunt tofu stumptown aliqua,復古合成大師淨化。小鬍子陳詞濫調,威廉斯堡卡爾斯素食主義者 helvetica。Reprehenderit 屠夫復古 keffiyeh 捕夢網合成器。Cosby 毛衣 eu banh mi, qui irure terry richardson ex squid。Aliquip placeat 鼠尾草 iphone。Seitan aliquip quis 開衫美國服裝,屠夫 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.
為了幫助滿足您的需求,這適用於<ul>
基於 - 的標記,如上所示,或任何任意“滾動您自己的”標記。請注意,如果您使用<nav>
,則不應role="tablist"
直接添加到它,因為這會覆蓋元素的本機角色作為導航地標。相反,切換到一個替代元素(在下面的示例中,一個簡單的<div>
)並環繞<nav>
它。
選項卡插件也適用於藥丸。
Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia。Fugiat velit proident aliquip nisi incidudant nostrud exercitation proident est nisi。Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud 坐在 veniam 廣告中的cupidatat。Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis。Occaecat 坐 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.
並與垂直藥丸。
Cillum ad ut irure tempor velit nostrud occaecat ullamco aliqua anim Lorem sint。Veniam sint duis incididunt do esse magna mollit excepteur laborum qui。Id id reprehenderit sit est eu aliqua occaecat quis et velit excepteur laborum mollit dolore eiusmod。occaecat commodo et voluptate minim reprehenderit mollit pariatur 中的 Ipsum dolor。Deserunt non labourum 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.
您無需編寫任何 JavaScript,只需在元素上指定data-toggle="tab"
或即可激活選項卡或藥丸導航。在或data-toggle="pill"
上使用這些數據屬性。.nav-tabs
.nav-pills
通過 JavaScript 啟用可選項卡(每個選項卡需要單獨激活):
您可以通過多種方式激活單個選項卡:
要使標籤淡入,請添加.fade
到每個.tab-pane
. 第一個選項卡窗格還必須.show
使初始內容可見。
激活選項卡元素和內容容器。Tab 應該在 DOM 中具有一個data-target
或一個href
目標容器節點。
選擇給定的選項卡並顯示其關聯的窗格。之前選擇的任何其他選項卡都將被取消選擇,並且其關聯的窗格被隱藏。在選項卡窗格實際顯示之前(即在事件發生之前)返回給調用者。shown.bs.tab
銷毀元素的選項卡。
顯示新選項卡時,事件按以下順序觸發:
hide.bs.tab
(在當前活動選項卡上)show.bs.tab
(在待顯示的選項卡上)hidden.bs.tab
(在上一個活動選項卡上,與hide.bs.tab
事件相同)shown.bs.tab
(在剛剛顯示的新活動選項卡上,與show.bs.tab
活動相同)
如果沒有選項卡處於活動狀態,則不會觸發hide.bs.tab
and事件。hidden.bs.tab
事件類型 | 描述 |
---|---|
顯示.bs.tab | 此事件在標籤顯示時觸發,但在新標籤顯示之前。使用event.target 和event.relatedTarget 分別定位活動選項卡和上一個活動選項卡(如果可用)。 |
顯示的.bs.tab | 顯示選項卡後,此事件在選項卡顯示時觸發。使用event.target 和event.relatedTarget 分別定位活動選項卡和上一個活動選項卡(如果可用)。 |
隱藏.bs.tab | 此事件在要顯示新選項卡時觸發(因此要隱藏先前的活動選項卡)。使用event.target 和event.relatedTarget 分別定位當前活動選項卡和新的即將活動選項卡。 |
hidden.bs.tab | 此事件在顯示新選項卡後觸發(因此先前的活動選項卡被隱藏)。使用event.target 和event.relatedTarget 分別定位前一個活動選項卡和新活動選項卡。 |