Bootstrap每天必學(xué)之導(dǎo)航組件
在bootstrap框架中將導(dǎo)航獨(dú)立出來(lái)成為一個(gè)導(dǎo)航組件,根據(jù)不同的版本,可以找到相應(yīng)的源碼:
LESS: navs.less
SASS: _navs.scss
標(biāo)簽形導(dǎo)航,也稱(chēng)選項(xiàng)卡導(dǎo)航
標(biāo)簽形導(dǎo)航是通過(guò).nav-tabs樣式來(lái)實(shí)現(xiàn)的,在制作標(biāo)簽形導(dǎo)航時(shí)需要在原導(dǎo)航類(lèi)名為.nav的容器上追加類(lèi)名.nav-tabs
<ul class="nav nav-tabs"> <li><a href="#">導(dǎo)航標(biāo)題1</a></li> <li><a href="#">導(dǎo)航標(biāo)題2</a></li> <li><a href="#">導(dǎo)航標(biāo)題3</a></li> <li><a href="#">導(dǎo)航標(biāo)題4</a></li> <li><a href="#">導(dǎo)航標(biāo)題5</a></li> </ul>
原理:
將菜單項(xiàng)li按塊顯示,并讓它們排列在同一水平上,然后定義非高亮菜單的樣式和鼠標(biāo)懸浮效果
.nav-tabs {
border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
float: left;
margin-bottom: -1px;
}
.nav-tabs > li > a {
margin-right: 2px;
line-height: 1.42857143;
border: 1px solid transparent;
border-radius: 4px 4px 0 0;
}
.nav-tabs > li >a:hover {
border-color: #eee #eee #ddd;
}
一般情況下,選項(xiàng)卡都會(huì)有個(gè)當(dāng)前選中項(xiàng),只需要在其(li)標(biāo)簽上添加類(lèi)名.active即可
<ul class="nav nav-tabs"> <li class="active"><a href="#">導(dǎo)航標(biāo)題1</a></li> <li><a href="#">導(dǎo)航標(biāo)題2</a></li> <li><a href="#">導(dǎo)航標(biāo)題3</a></li> <li><a href="#">導(dǎo)航標(biāo)題4</a></li> <li><a href="#">導(dǎo)航標(biāo)題5</a></li> </ul>
.nav-tabs >li.active> a,
.nav-tabs >li.active>a:hover,
.nav-tabs >li.active>a:focus {
color: #555;
cursor: default;
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: transparent;
}
除了當(dāng)前選項(xiàng)外,有的選項(xiàng)卡還帶有禁用狀態(tài),實(shí)現(xiàn)這樣的效果,只需在標(biāo)簽項(xiàng)上添加類(lèi)名disabled
.nav>li.disabled> a {
color: #999;
}
.nav>li.disabled>a:hover,
.nav>li.disabled>a:focus {
color: #999;
text-decoration: none;
cursor: not-allowed;
background-color: transparent;
}
如果要實(shí)現(xiàn)點(diǎn)擊菜單項(xiàng)就可以切換內(nèi)容的效果,就需要配合js插件
膠囊形(pills)導(dǎo)航
當(dāng)前高亮顯示,并帶圓角效果,其實(shí)現(xiàn)方法和選項(xiàng)卡導(dǎo)航類(lèi)似,同樣的結(jié)構(gòu),只需將類(lèi)名.nav-tabs換成類(lèi)名.nav-pills
.nav-pills > li {
float: left;
}
.nav-pills > li > a {
border-radius: 4px;
}
.nav-pills > li + li {
margin-left: 2px;
}
.nav-pills >li.active> a,
.nav-pills >li.active>a:hover,
.nav-pills >li.active>a:focus {
color: #fff;
background-color: #428bca;
}
垂直堆疊的導(dǎo)航
除了水平導(dǎo)航,還有垂直導(dǎo)航,制作垂直堆疊的導(dǎo)航只需在.nav-pills的基礎(chǔ)上追加類(lèi)名.nav-stacked
與膠囊形導(dǎo)航相比,主要是讓導(dǎo)航項(xiàng)不浮動(dòng),讓其垂直排列,然后給相鄰導(dǎo)航項(xiàng)留有一定的間距
.nav-stacked > li {
float: none;
}
.nav-stacked > li + li {
margin-top: 2px;
margin-left: 0;
}
<ul class="nav nav-pills nav-stacked">
<li><a href="#">導(dǎo)航標(biāo)題0</a></li>
<li class="active"><a href="#">導(dǎo)航標(biāo)題1</a></li>
<li><a href="#">導(dǎo)航標(biāo)題2</a></li>
<li><a href="#">導(dǎo)航標(biāo)題3</a></li>
<li><a href="#">導(dǎo)航標(biāo)題4</a></li>
<li class="disabled"><a href="#">導(dǎo)航標(biāo)題5</a></li>
</ul>
垂直堆疊導(dǎo)航像下拉菜單組與組間有一分割線一樣,導(dǎo)航項(xiàng)之間也有分割線這樣的效果,只需在導(dǎo)航項(xiàng)之間添加<li class=”divider”></li>
<ul class="nav nav-pills nav-stacked"> <li ><a href="#">導(dǎo)航標(biāo)題0</a></li> <li class="active"><a href="#">導(dǎo)航標(biāo)題1</a></li> <li><a href="#">導(dǎo)航標(biāo)題2</a></li> <li class="nav-divider"></li> <li><a href="#">導(dǎo)航標(biāo)題3</a></li> <li><a href="#">導(dǎo)航標(biāo)題4</a></li> <li class="disabled"><a href="#">導(dǎo)航標(biāo)題5</a></li> </ul>
.nav .nav-divider {
height: 1px;
margin: 9px 0;
overflow: hidden;
background-color: #e5e5e5;
}
自適應(yīng)導(dǎo)航
自適應(yīng)導(dǎo)航指的是導(dǎo)航占據(jù)容器全部寬度,而且菜單項(xiàng)可以像表格的單元格一樣自適應(yīng)寬度,自適應(yīng)導(dǎo)航和之前提到的.btn-group-justified制作的自適應(yīng)按鈕組件一樣,不過(guò)在制作自適應(yīng)導(dǎo)航時(shí)類(lèi)名.nav-justified需和.nav-tabs或.nav-pills配合一起使用
原理:
列表ul上設(shè)置寬度為100%,然后每個(gè)菜單項(xiàng)li設(shè)置了display:table-cell,讓列表模擬表格單元格的形式顯示;
.nav-justified {
width: 100%;
}
.nav-justified > li {
float: none;
}
.nav-justified > li > a {
margin-bottom: 5px;
text-align: center;
}
.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-justified > li > a {
margin-bottom: 0;
}
}
上面有一個(gè)媒體查詢(xún)條件:@media(min-width:768px){……}表示自適應(yīng)導(dǎo)航僅在瀏覽器視窗寬度大于768px才能按上面的風(fēng)格顯示,但瀏覽器視窗寬度小于768px時(shí),會(huì)按下圖的風(fēng)格顯示

.nav-tabs和.nav-justified配合在一起使用,也就是自適應(yīng)選項(xiàng)卡導(dǎo)航,瀏覽器視窗寬度小于768px時(shí),在樣式上做了另外的處理
.nav-tabs.nav-justified {
width: 100%;
border-bottom: 0;
}
.nav-tabs.nav-justified > li {
float: none;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 5px;
text-align: center;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs.nav-justified > li > a {
margin-right: 0;
border-radius: 4px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active >a:hover,
.nav-tabs.nav-justified > .active >a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 4px 4px 0 0;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active >a:hover,
.nav-tabs.nav-justified > .active >a:focus {
border-bottom-color: #fff;
}
}
導(dǎo)航加下拉菜單(二級(jí)導(dǎo)航)
制做二級(jí)導(dǎo)航只需將li當(dāng)做父容器,使用類(lèi)名.dropdown,同時(shí)在li中嵌套另一個(gè)ul列表
<ul class="nav nav-tabs">
<li><a href="#">導(dǎo)航菜單1</a></li>
<li><a href="#">導(dǎo)航菜單2</a></li>
<li><a href="#">導(dǎo)航菜單3</a></li>
<li><a href="#">導(dǎo)航菜單4</a></li>
<li class="dropdown">
<a class="dropdown-toggle"data-toggle="dropdown">
導(dǎo)航菜單5
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a href="#">下拉菜單1</a></li>
<li><a href="#">下拉菜單2</a></li>
<li><a href="#">下拉菜單3</a></li>
<li><a href="#">下拉菜單4</a></li>
</ul>
</li>
<li><a href="#">導(dǎo)航菜單6</a></li>
</ul>
面包屑式導(dǎo)航
面包屑一般用于導(dǎo)航,主要的作用是告訴用戶(hù)現(xiàn)在所處頁(yè)面的位置,在bootstrap框架中面包屑也是一個(gè)獨(dú)立的模塊組件。
LESS: breadcrumbs.less
SASS:_breadcrumbs.scss
<ol class="breadcrumb"> <li><a href="#">首頁(yè)</a></li> <li><a href="#">我的書(shū)</a></li> <li class="active">圖解css</li> </ol>
.breadcrumb {
padding: 8px 15px;
margin-bottom: 20px;
list-style: none;
background-color: #f5f5f5;
border-radius: 4px;
}
.breadcrumb> li {
display: inline-block;
}
.breadcrumb> li + li:before {
padding: 0 5px;
color: #ccc;
content: "/\00a0";
}
.breadcrumb> .active {
color: #999;
}
上面使用li+li:before實(shí)現(xiàn)li與li之間的分隔符,這種方案在低版本ie不支持
如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附兩個(gè)精彩的專(zhuān)題:Bootstrap學(xué)習(xí)教程 Bootstrap實(shí)戰(zhàn)教程
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
javascript正則表達(dá)式之search()用法實(shí)例
這篇文章主要介紹了javascript正則表達(dá)式之search()用法,實(shí)例分析了search()的使用技巧,需要的朋友可以參考下2015-01-01
如何使用ImageDecoder API讓GIF圖片暫停播放
在本文中,我們介紹了如何使用ImageDecoder API來(lái)暫停GIF圖像的播放,雖然這需要一些JavaScript編程知識(shí),但它是一個(gè)非常強(qiáng)大的技術(shù),可以讓您對(duì)GIF圖像進(jìn)行各種高級(jí)操作,感興趣的朋友跟隨小編一起看看吧2023-06-06
bootstrap-wysiwyg結(jié)合ajax實(shí)現(xiàn)圖片上傳實(shí)時(shí)刷新功能
這篇文章主要為大家詳細(xì)介紹了bootstrap-wysiwyg結(jié)合ajax實(shí)現(xiàn)圖片上傳實(shí)時(shí)刷新功能,感興趣的小伙伴們可以參考一下2016-05-05
Django1.7+JQuery+Ajax驗(yàn)證用戶(hù)注冊(cè)集成小例子
下面是散仙使用Django+Jquery+Ajax的方式來(lái)模擬實(shí)現(xiàn)了一個(gè)驗(yàn)證用戶(hù)注冊(cè)時(shí),用戶(hù)名存在不存在的一個(gè)小應(yīng)用。注意,驗(yàn)證存在不存在使用的是Ajax的方式,不用讓用戶(hù)點(diǎn)擊按鈕驗(yàn)證是否存在,需要的朋友可以參考下2017-04-04
JS實(shí)現(xiàn)同一個(gè)網(wǎng)頁(yè)布局滑動(dòng)門(mén)和TAB選項(xiàng)卡實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)同一個(gè)網(wǎng)頁(yè)布局滑動(dòng)門(mén)和TAB選項(xiàng)卡效果,通過(guò)簡(jiǎn)單的自定義切換函數(shù)setTab實(shí)現(xiàn)頁(yè)面元素的遍歷及屬性切換的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
微信小程序開(kāi)發(fā)之toast提示插件使用示例
這篇文章主要給大家介紹了微信小程序開(kāi)發(fā)之toast提示插件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
詳解layui?laydate選擇時(shí)間的回調(diào)方法
這篇文章主要介紹了layui?laydate選擇時(shí)間的回調(diào)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
???????基于el-table和el-pagination實(shí)現(xiàn)數(shù)據(jù)的分頁(yè)效果流程詳解
本文主要介紹了???????基于el-table和el-pagination實(shí)現(xiàn)數(shù)據(jù)的分頁(yè)效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-11-11
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
這篇文章主要介紹了JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()的相關(guān)資料,需要的朋友可以參考下2016-08-08
js神秘的電報(bào)密碼 哈弗曼編碼實(shí)現(xiàn)
這篇文章主要介紹了js神秘的電報(bào)密碼 哈弗曼編碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09

