Bootstrap源碼解讀導航條(7)
源碼解讀Bootstrap導航條
基礎導航條
要制作一個基礎導航條,要在制作導航的列表<ul class="nav">基礎上添加類名“navbar-nav”,然后在列表外部添加一個容器(div),并且使用類名“navbar”和“navbar-default”。例如:
<div class="navbar navbar-default" role="navigation"> <ul class="nav navbar-nav"> <li class="active"><a href="##">首頁</a></li> <li><a href="##">網(wǎng)站內(nèi)容</a></li> <li><a href="##">關于我們</a></li> </ul> </div>
“.navbar”樣式的主要功能就是設置左右padding和圓角等效果,實現(xiàn)源碼如下:
.navbar { position: relative; min-height: 50px; margin-bottom: 20px; border: 1px solid transparent; }
導航條的顏色都是通過“.navbar-default”來進行控制,實現(xiàn)源碼如下:
.navbar-default { background-color: #f8f8f8; border-color: #e7e7e7; }
“.navbar-nav”樣式是在導航“.nav”的基礎上重新調(diào)整了菜單項的浮動與內(nèi)外邊距。而顏色和其他樣式是通過配合父容器“navbar-default”來一起實現(xiàn)。實現(xiàn)源碼如下:
.navbar-default .navbar-nav> li > a { color: #777; } .navbar-default .navbar-nav> li >a:hover, .navbar-default .navbar-nav> li >a:focus { color: #333; background-color: transparent; } .navbar-default .navbar-nav> .active > a, .navbar-default .navbar-nav> .active >a:hover, .navbar-default .navbar-nav> .active >a:focus { color: #555; background-color: #e7e7e7; } .navbar-default .navbar-nav> .disabled > a, .navbar-default .navbar-nav> .disabled >a:hover, .navbar-default .navbar-nav> .disabled >a:focus { color: #ccc; background-color: transparent; }
導航條標題
通過“navbar-header”和“navbar-brand”來實現(xiàn),例如:
<div class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <a href="##" class="navbar-brand">標題</a> </div> <ul class="nav navbar-nav"> ... </ul> </div>
主要是加大了字體設置,并且設置了最大寬度,實現(xiàn)源碼如下:
.navbar-brand { float: left; height: 50px; padding: 15px 15px; font-size: 18px; line-height: 20px; } .navbar-brand:hover, .navbar-brand:focus { text-decoration: none; } .navbar-brand > img { display: block; } @media (min-width: 768px) { .navbar > .container .navbar-brand, .navbar > .container-fluid .navbar-brand { margin-left: -15px; } }
在默認導航條(navbar-default)下,對navbar-brand也做了顏色處理,實現(xiàn)源碼如下:
.navbar-default .navbar-brand { color: #777; } .navbar-default .navbar-brand:hover, .navbar-default .navbar-brand:focus { color: #5e5e5e; background-color: transparent; }
帶表單的導航條
在navbar容器中放置一個帶有“navbar-form”類名的表單,例如:
<div class="navbar navbar-default" role="navigation"> <ul class="nav navbar-nav"> ... </ul> <form action="##" class="navbar-form navbar-left" rol="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="請輸入關鍵詞"/> </div> <button type="submit" class="btn btn-default">搜索</button> </form> </div>
實現(xiàn)源碼如下:
.navbar-form { padding: 10px 15px; margin-top: 8px; margin-right: -15px; margin-bottom: 8px; margin-left: -15px; border-top: 1px solid transparent; border-bottom: 1px solid transparent; -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); } @media (min-width: 768px) { .navbar-form .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .navbar-form .form-control { display: inline-block; width: auto; vertical-align: middle; } .navbar-form .form-control-static { display: inline-block; } .navbar-form .input-group { display: inline-table; vertical-align: middle; } .navbar-form .input-group .input-group-addon, .navbar-form .input-group .input-group-btn, .navbar-form .input-group .form-control { width: auto; } .navbar-form .input-group > .form-control { width: 100%; } .navbar-form .control-label { margin-bottom: 0; vertical-align: middle; } .navbar-form .radio, .navbar-form .checkbox { display: inline-block; margin-top: 0; margin-bottom: 0; vertical-align: middle; } .navbar-form .radio label, .navbar-form .checkbox label { padding-left: 0; } .navbar-form .radio input[type="radio"], .navbar-form .checkbox input[type="checkbox"] { position: relative; margin-left: 0; } .navbar-form .has-feedback .form-control-feedback { top: 0; } } @media (max-width: 767px) { .navbar-form .form-group { margin-bottom: 5px; } .navbar-form .form-group:last-child { margin-bottom: 0; } } @media (min-width: 768px) { .navbar-form { width: auto; padding-top: 0; padding-bottom: 0; margin-right: 0; margin-left: 0; border: 0; -webkit-box-shadow: none; box-shadow: none; } }
“navbar-left”可以讓導航條里的表單左浮動,“navbar-right”為右浮動。實現(xiàn)源碼如下:
@media (min-width: 768px) { .navbar-left { float: left !important; } .navbar-right { float: right !important; } }
固定導航條
要將導航條固定在瀏覽器頂部或底部,只需要在制作導航條最外部容器navbar上追加對應的類名即可:
.navbar-fixed-top:導航條固定在瀏覽器窗口頂部
.navbar-fixed-bottom:導航條固定在瀏覽器窗口底部
例如:<div class="navbar navbar-default navbar-fixed-top" role="navigation">...</div>
實現(xiàn)原理就是在navbar-fixed-top和navbar-fixed-bottom使用了position:fixed屬性,并且設置navbar-fixed-top的top值為0,而navbar-fixed-bottom的bottom值為0。實現(xiàn)源碼如下:
.navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; } @media (min-width: 768px) { .navbar-fixed-top, .navbar-fixed-bottom { border-radius: 0; } } .navbar-fixed-top { top: 0; border-width: 0 0 1px; } .navbar-fixed-bottom { bottom: 0; margin-bottom: 0; border-width: 1px 0 0; }
不過我們可以發(fā)現(xiàn),頁面主內(nèi)容頂部和底部都被固定導航條給遮住了。我們可以在body上加上樣式:padding-top: 70px;或padding-bottom: 70px;來避免這種情況。
響應式導航條
響應式導航條比較復雜,寬屏是水平平鋪顯示,窄屏時收縮垂直顯示,使用方法如下:
1. 把在窄屏時需要折疊的內(nèi)容包裹在帶一個div內(nèi),并且為這個div追加“collapse”、“navbar-collapse”兩個類名。最后為這個div添加一個class類名或者id名。
2. 定制在窄屏時要顯示的圖標樣式。
3. 為button添加data-target=”.類名”或data-target=”#id名”,是類名還是id名由需要折疊的div來決定。
完整示例如下:
<div class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <!-- .navbar-toggle樣式用于toggle收縮的內(nèi)容,即nav-collapse collapse樣式所在元素 --> <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".navbar-responsive-collapse"> <span class="sr-only">Toggle Navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <!-- 確保無論是寬屏還是窄屏,navbar-brand都顯示 --> <a href="##" class="navbar-brand">Bootstrap中文網(wǎng)</a> </div> <!-- 屏幕寬度小于768px時,div.navbar-responsive-collapse容器里的內(nèi)容都會隱藏,顯示icon-bar圖標,當點擊icon-bar圖標時,再展開。屏幕大于768px時,默認顯示。 --> <div class="collapse navbar-collapse navbar-responsive-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="##">Bootstrap2</a></li> <li><a href="##">Bootstrap3</a></li> <li><a href="##">Bootstrap4</a></li> <li><a href="##">網(wǎng)站實例</a></li> </ul> </div> </div>
反色導航條
將navbar-deafult類名換成navbar-inverse即可。只是導航條的背景色和文本做了修改。
帶頁碼的分頁導航
在ul標簽上加入pagination方法即可。例如:
<ul class="pagination"> <li><a href="#">«第一頁</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li class="active"><a href="#">4</a></li> <li><a href="#">5</a></li> <li class="disabled"><a href="#">最后一頁»</a></li> </ul>
實現(xiàn)源碼如下:
.pagination> .active > a, .pagination> .active > span, .pagination> .active >a:hover, .pagination> .active >span:hover, .pagination> .active >a:focus, .pagination> .active >span:focus { z-index: 2; color: #fff; cursor: default; background-color: #428bca; border-color: #428bca; } .pagination> .disabled > span, .pagination> .disabled >span:hover, .pagination> .disabled >span:focus, .pagination> .disabled > a, .pagination> .disabled >a:hover, .pagination> .disabled >a:focus { color: #999; cursor: not-allowed; background-color: #fff; border-color: #ddd; }
在ul上追加“pagination-lg”可以讓分頁導航變大,“pagination-sm”可以讓分頁導航變小。實現(xiàn)源碼如下:
.pagination-lg> li > a, .pagination-lg> li > span { padding: 10px 16px; font-size: 18px; } .pagination-lg>li:first-child> a, .pagination-lg>li:first-child> span { border-top-left-radius: 6px; border-bottom-left-radius: 6px; } .pagination-lg>li:last-child> a, .pagination-lg>li:last-child> span { border-top-right-radius: 6px; border-bottom-right-radius: 6px; } .pagination-sm> li > a, .pagination-sm> li > span { padding: 5px 10px; font-size: 12px; } .pagination-sm>li:first-child> a, .pagination-sm>li:first-child> span { border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .pagination-sm>li:last-child> a, .pagination-sm>li:last-child> span { border-top-right-radius: 3px; border-bottom-right-radius: 3px; }
翻頁分頁導航
為ul標簽加入pager類即可。例如:
<ul class="pager"> <li><a href="#">«上一頁</a></li> <li><a href="#">下一頁»</a></li> </ul>
實現(xiàn)源碼如下:
.pager { padding-left: 0; margin: 20px 0; text-align: center; list-style: none; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #eee; }
導航默認居中,如果要一個居左一個居右,可以在li分別上追加previous和next類名。實現(xiàn)源碼如下:
.pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; }
本文系列教程整理到:Bootstrap基礎教程 專題中,歡迎點擊學習。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
JS控制只能輸入數(shù)字并且最多允許小數(shù)點兩位
這篇文章主要介紹了JS控制只能輸入數(shù)字并且最多允許小數(shù)點兩位,本文給大家提到js如何限制input輸入框只能輸入數(shù)字問題,需要的朋友可以參考下2019-11-11JavaScript時間日期操作實例小結(jié)【5個示例】
這篇文章主要介紹了JavaScript時間日期操作,結(jié)合5個具體實例形式分析了javascript針對日期時間的各種常見操作技巧,需要的朋友可以參考下2018-12-12silverlight線程與基于事件驅(qū)動javascript引擎(實現(xiàn)軌跡回放功能)
前一段時間一直在重構(gòu)工作站軌跡回放功能,一開始我覺得很簡單,但是后面引發(fā)了一系列奇怪的問題,讓我很疼,所以不得不寫個總結(jié)加深記憶,2011-08-08