1、下拉菜單(基本用法)
在Bootstrap框架中的下拉菜單組件是一個獨立的組件,根據不同的版本,它對應的文件:
☑ LESS版本:對應的源碼文件為 dropdowns.less
☑ Sass版本:對應的源碼文件為 _dropdowns.scss
☑ 編譯后的Bootstrap版本:查看bootstrap.css文件第3004行~第3130行
在使用Bootstrap框架的下拉菜單時,必須調用Bootstrap框架提供的bootstrap.js文件。當然,如果你使用的是未編譯版本,在js文件夾下你能找到一個名為“dropdown.js”的文件。你也可以調用這個js文件。不過在我們的教程中,我們統一調用壓縮好的“bootstrap.min.js”文件
因為Bootstrap的組件交互效果都是依賴於jQuery庫寫的插件,所以在使用bootstrap.min.js之前一定要先加載jquery.min.js才會生效果
使用方法:
在使用Bootstrap框架中的下拉菜單組件時,其結構運用的正確與否非常的重要,如果結構和類名未使用正確,直接影響組件是否能正常運用。我們來簡單的看看:
1、使用一個名為“dropdown”的容器包裹了整個下拉菜單元素,示例中為:
<div class="dropdown"></div>
2、使用了一個<button>按鈕做為父菜單,並且定義類名“dropdown-toggle”和自定義“data-toggle”屬性,且值必須和最外容器類名一致,此示例為:
data-toggle="dropdown"
3、下拉菜單項使用一個ul列表,並且定義一個類名為“dropdown-menu”,此示例為:
<ul class="dropdown-menu">
<div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown"> 下拉菜單 <span class="caret"></span> </button> <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1"> <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜單項</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜單項</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜單項</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜單項</a></li> </ul> </div>
2、下拉菜單(下拉分隔線、菜單標題)
在Bootstrap框架中的下拉菜單還提供了下拉分隔線,假設下拉菜單有兩個組,那么組與組之間可以通過添加一個空的<li>,並且給這個<li>添加類名“divider”來實現添加下拉分隔線的功能
<li role="presentation" class="divider"></li>
<li role="presentation" class="dropdown-header">第一部分菜單頭部</li>
3、下拉菜單(對齊方式,菜單項狀態)
Bootstrap框架中下拉菜單默認是左對齊,如果你想讓下拉菜單相對於父容器右對齊時,可以在“dropdown-menu”上添加一個“pull-right”或者“dropdown-menu-right”類名
<ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dropdownMenu1">
下拉菜單項的默認的狀態(不用設置)有懸浮狀態(:hover)和焦點狀態(:focus)
下拉菜單項除了上面兩種狀態,還有當前狀態(.active)和禁用狀態(.disabled)。這兩種狀態使用方法只需要在對應的菜單項上添加對應的類名
<li role="presentation" class="active"><a role="menuitem" tabindex="-1" href="#">下拉菜單項</a></li> <li role="presentation" class="disabled"><a role="menuitem" tabindex="-1" href="#">下拉菜單項</a></li>
4、按鈕(按鈕組)
<div class="btn-group"> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-step-backward"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-fast-backward"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-backward"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-play"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-pause"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-stop"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-forward "></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-fast-forward"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-step-forward"></span></button> </div>
5、按鈕(按鈕工具欄)
將按鈕組分組排列在一起,比如說復制、剪切和粘貼一組;左對齊、中間對齊、右對齊和兩端對齊一組
需要將按鈕組“btn-group”按組放在一個大的容器“btn-toolbar”中
<div class="btn-toolbar"> <div class="btn-group"> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-left"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-center"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-right"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-align-justify"></span></button> </div> <div class="btn-group"> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-indent-left"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-indent-right"></span></button> </div> <div class="btn-group"> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-font"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-bold"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-italic"></span></button> </div> <div class="btn-group"> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-text-height"></span></button> <button type="button" class="btn btn-default"><span class="glyphicon glyphicon-text-width"></span></button> </div> </div>
6、按鈕(嵌套分組,垂直分組,等分按鈕)
我們常把下拉菜單和普通的按鈕組排列在一起,實現類似於導航菜單的效果
<div class="btn-group"> <button class="btn btn-default" type="button">首頁</button> <button class="btn btn-default" type="button">產品展示</button> <button class="btn btn-default" type="button">案例分析</button> <button class="btn btn-default" type="button">聯系我們</button> <div class="btn-group"> <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">關於我們<span class="caret"></span></button> <ul class="dropdown-menu"> <li><a href="##">公司簡介</a></li> <li><a href="##">企業文化</a></li> <li><a href="##">組織結構</a></li> <li><a href="##">客服服務</a></li> </ul> </div> </div>
垂直顯示的效果。在Bootstrap框架中也提供了這樣的風格。我們只需要把水平分組的“btn-group”類名換成“btn-group-vertical”即可
<div class="btn-group-vertical">
等分按鈕的效果在移動端上特別的實用。整個按鈕組寬度是容器的100%,而按鈕組里面的每個按鈕平分整個容器寬度。例如,如果你按鈕組里面有五個按鈕,那么每個按鈕是20%的寬度,如果有四個按鈕,那么每個按鈕是25%寬度,以此類推。
等分按鈕也常被稱為是自適應分組按鈕,其實現方法也非常的簡單,只需要在按鈕組“btn-group”上追加一個“btn-group-justified”類名
<div class="btn-wrap"> <div class="btn-group btn-group-justified"> <a class="btn btn-default" href="#">首頁</a> <a class="btn btn-default" href="#">產品展示</a> <a class="btn btn-default" href="#">案例分析</a> <a class="btn btn-default" href="#">聯系我們</a> </div> </div>
在制作等分按鈕組時,請盡量使用<a>標簽元素來制作按鈕,因為使用<button>標簽元素時,使用display:table在部分瀏覽器下支持並不友好
7、按鈕的向下向上三角形
按鈕的向下三角形,我們是通過在<button>標簽中添加一個“<span>”標簽元素,並且命名為“caret”:
這個三角形完全是通過CSS代碼來實現的:
.caret { display: inline-block; width: 0; height: 0; margin-left: 2px; vertical-align: middle; border-top: 4px solid; border-right: 4px solid transparent; border-left: 4px solid transparent; }
三角方向需要朝上顯示,實現方法:需要在“.btn-group”類上追加“dropup”類名(這也是做向上彈起下拉菜單要用的類名
.dropup .caret, .navbar-fixed-bottom .dropdown .caret { content: ""; border-top: 0; border-bottom: 4px solid; }
向上三角與向下三角的區別:其實就是改變了一個border-bottom的值
8、導航(基礎樣式)
在Bootstrap框架將導航獨立出來成為一個導航組件,根據不同的版本,可以找到對應的源碼:
☑ LESS版本:對應的源文件是navs.less
☑ Sass版本:對應的源文件是_navs.scss
☑ 編譯后版本:對應源碼是bootstrap.css文件第3450行~第3641行
導航基礎樣式
Bootstrap框架中制作導航條主要通過“.nav”樣式。默認的“.nav”樣式不提供默認的導航樣式,必須附加另外一個樣式才會有效,比如“nav-tabs”、“nav-pills”之類。比如右側代碼編輯器中就有一個tab導航條的例子,他的實現方法就是為ul標簽加入.nav和nav-tabs兩個類樣式
<ul class="nav nav-tabs"> <li><a href="##">Home</a></li> <li><a href="##">CSS3</a></li> <li><a href="##">Sass</a></li> <li><a href="##">jQuery</a></li> <li><a href="##">Responsive</a></li> </ul> <br /> <ul class="nav nav-tabs"> <li class="active"><a href="##">Home</a></li> <li><a href="##">CSS3</a></li> <li><a href="##">Sass</a></li> <li><a href="##">jQuery</a></li> <li><a href="##">Responsive</a></li> </ul> <br /> <ul class="nav nav-tabs"> <li class="active"><a href="##">Home</a></li> <li><a href="##">CSS3</a></li> <li><a href="##">Sass</a></li> <li><a href="##">jQuery</a></li> <li class="disabled"><a href="##">Responsive</a></li> </ul>
9、膠囊形(pills)導航、垂直堆疊的導航、自適應導航
只需要把類名“nav-tabs”換成“nav-pills”即可
制作垂直堆疊導航只需要在“nav-pills”的基礎上添加一個“nav-stacked”類名即可
自適應導航指的是導航占據容器全部寬度,而且菜單項可以像表格的單元格一樣自適應寬度。自適應導航和前面使用“btn-group-justified”制作的自適應按鈕組是一樣的。只不過在制作自適應導航時更換了另一個類名“nav-justified”。當然他需要和“nav-tabs”或者“nav-pills”配合在一起使用。
<ul class="nav nav-tabs nav-justified"> <li class="active"><a href="##">Home</a></li> <li><a href="##">CSS3</a></li> <li><a href="##">Sass</a></li> <li><a href="##">jQuery</a></li> <li><a href="##">Responsive</a></li> </ul>
10、導航加下拉菜單(二級導航)
只需要將li當作父容器,使用類名“dropdown”,同時在li中嵌套另一個列表ul
<ul class="nav nav-pills"> <li class="active"><a href="##">首頁</a></li> <li class="dropdown"> <a href="##" class="dropdown-toggle" data-toggle="dropdown">教程<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="##">CSS3</a></li> <li><a href="##">Sass</a></li> <li><a href="##">jQuery</a></li> <li><a href="##">Responsive</a></li> </ul> </li> <li><a href="##">關於我們</a></li> </ul>
11、面包屑式導航
面包屑(Breadcrumb)一般用於導航,主要是起的作用是告訴用戶現在所處頁面的位置(當前位置)。在Bootstrap框架中面包屑也是一個獨立模塊組件:
- LESS版本:對應源文件breadcrumbs.less
- Sass版本:對應源文件_breadcrumbs.scss
- 編譯出來的版本:源碼對應bootstrap.css文件第4112行~第4129行
使用方法:
使用方式就很簡單,為ol加入breadcrumb類
<ol class="breadcrumb"> <li><a href="#">首頁</a></li> <li><a href="#">我的書</a></li> <li class="active">《圖解CSS3》</li> </ol>
12、導航條
導航條(navbar)和上一節介紹的導航(nav),就相差一個字,多了一個“條”字。其實在Bootstrap框架中他們還是明顯的區別。在導航條(navbar)中有一個背景色、而且導航條可以是純鏈接(類似導航),也可以是表單,還有就是表單和導航一起結合等多種形式。在這一節中將一起探討Bootstrap框架中導航條的使用。
導航條和導航一樣,在Bootstrap框架中是一個獨立組件,所以你也可以根據自己的需求使用不同的版本:
- LESS版本:對應的源文件navbar.less
- Sass版本:對應的源文件_navbar.scss
- 編譯后的版本:查看bootstrap.css文件第3642行~第4111行(注意這個所說的Bootstrap版本是3.1.1,其它版本位置是不一致的),這五百多行代碼已從原文中節取出來,放在右側代碼頂部“bootstrap.css”文件中
<div class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <a href="##" class="navbar-brand">慕課網</a> </div> <ul class="nav navbar-nav"> <li class="active"><a href="##">網站首頁</a></li> <li class="dropdown"> <a href="##" data-toggle="dropdown" class="dropdown-toggle">系列教程<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="##">CSS3</a></li> <li><a href="##">JavaScript</a></li> <li class="disabled"><a href="##">PHP</a></li> </ul> </li> <li><a href="##">名師介紹</a></li> <li><a href="##">成功案例</a></li> <li><a href="##">關於我們</a></li> </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>
13、導航條中的按鈕、文本和鏈接,固定導航條
Bootstrap框架的導航條中除了使用navbar-brand中的a元素和navbar-nav的ul和navbar-form之外,還可以使用其他元素。框架提供了三種其他樣式:
1、導航條中的按鈕navbar-btn
2、導航條中的文本navbar-text
3、導航條中的普通鏈接navbar-link
但這三種樣式在框架中使用時受到一定的限制,需要和navbar-brand、navbar-nav配合起來使用。而且對數量也有一定的限制,一般情況在使用一到兩個不會有問題,超過兩個就會有問題
<div class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <a href="##" class="navbar-brand">慕課網</a> </div> <div class="nav navbar-nav"> <a href="##" class="navbar-text">Navbar Text</a> <a href="##" class="navbar-text">Navbar Text</a> <a href="##" class="navbar-text">Navbar Text</a> </div> </div>
兩種固定導航條的方式:
☑ .navbar-fixed-top:導航條固定在瀏覽器窗口頂部
☑ .navbar-fixed-bottom:導航條固定在瀏覽器窗口底部
14、響應式導航條
實現的導航條僅能適配於大屏幕的瀏覽器,但當瀏覽器屏幕變小的時候,就不適合了。
使用方法:
1、保證在窄屏時需要折疊的內容必須包裹在帶一個div內,並且為這個div加入collapse、navbar-collapse兩個類名。最后為這個div添加一個class類名或者id名。
2、保證在窄屏時要顯示的圖標樣式(固定寫法)
反色導航條其實是Bootstrap框架為大家提供的第二種風格的導航條,與默認的導航條相比,使用方法並無區別,只是將navbar-deafult類名換成navbar-inverse
<div class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <!-- .navbar-toggle樣式用於toggle收縮的內容,即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">慕課網</a> </div> <!-- 屏幕寬度小於768px時,div.navbar-responsive-collapse容器里的內容都會隱藏,顯示icon-bar圖標,當點擊icon-bar圖標時,再展開。屏幕大於768px時,默認顯示。 --> <div class="collapse navbar-collapse navbar-responsive-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="##">網站首頁</a></li> <li><a href="##">系列教程</a></li> <li><a href="##">名師介紹</a></li> <li><a href="##">成功案例</a></li> <li><a href="##">關於我們</a></li> </ul> </div> </div>
15、分頁導航(帶頁碼的分頁導航)
在Bootstrap框架中提供了兩種分頁導航:
☑ 帶頁碼的分頁導航
☑ 帶翻頁的分頁導航
帶頁碼的分頁導航
帶頁碼的分頁導航,可能是最常見的一種分頁導航,特別是在列表頁內容超多的時候,會給用戶提供分頁的導航方式。在Bootstrap框架為開發者提供不同的版本:
☑ LESS版本:對應的源文件pagination.less
☑ Sass版本:對應的源文件_pagination.scss
☑ 編譯后版本:對應bootstrap.css文件第4130行~第4222行
使用方法:
平時很多同學喜歡用div>a
和div>span
結構來制作帶頁碼的分頁導航。不過,在Bootstrap框架中使用的是ul>li>a
這樣的結構,在ul標簽上加入pagination方法
要禁用當前狀態和禁用狀態不能點擊,我們還要依靠js來實現,或者將這兩狀態下的a標簽換成span標簽。
大小設置:
在Bootstrap框架中,也可以通過幾個不同的情況來設置其大小。類似於按鈕一樣:
1、通過“pagination-lg”讓分頁導航變大;
2、通過“pagination-sm”讓分頁導航變小、
<ul class="pagination pagination-lg"> <li><a href="#">«第一頁</a></li> <li><a href="#">11</a></li> <li><a href="#">12</a></li> <li class="active"><a href="#">13</a></li> <li><a href="#">14</a></li> <li><a href="#">15</a></li> <li class="disabled"><a href="#">最后一頁»</a></li> </ul> <ul class="pagination pagination"> <li><a href="#">«第一頁</a></li> <li><a href="#">11</a></li> <li><a href="#">12</a></li> <li class="active"><a href="#">13</a></li> <li><a href="#">14</a></li> <li><a href="#">15</a></li> <li class="disabled"><a href="#">最后一頁»</a></li> </ul> <ul class="pagination pagination-sm"> <li><a href="#">«第一頁</a></li> <li><a href="#">11</a></li> <li><a href="#">12</a></li> <li class="active"><a href="#">13</a></li> <li><a href="#">14</a></li> <li><a href="#">15</a></li> <li class="disabled"><a href="#">最后一頁»</a></li> </ul>
<ul class="pager"> <li><a href="#">«上一頁</a></li> <li><a href="#">下一頁»</a></li> </ul>
16、標簽、徽章
徽章效果和前面介紹的標簽效果是極其的相似。也是用來做一些提示信息使用。常出現的是一些系統發出的信息,比如你登錄你的twitter后,如果你信息沒有看,系統會告訴你有多少信息未讀
<a href="#">Inbox <span class="badge">42</span></a> <!--navbar-default導航條勛章--> <div class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <a href="##" class="navbar-brand">慕課網</a> </div> <ul class="nav navbar-nav"> <li class="active"><a href="##">網站首頁</a></li> <li><a href="##">系列教程</a></li> <li><a href="##">名師介紹</a></li> <li><a href="##">成功案例<span class="badge">23</span></a></li> <li><a href="##">關於我們</a></li> </ul> </div> <!--nav-pills導航條勛章--> <ul class="nav nav-pills"> <li class="active"><a href="#">Home <span class="badge">42</span></a></li> <li><a href="#">Profile</a></li> <li><a href="#">Messages <span class="badge">3</span></a></li> </ul> <br /> <ul class="nav nav-pills nav-stacked" style="max-width: 260px;"> <li class="active"> <a href="#"> <span class="badge pull-right">42</span> Home </a> </li> <li><a href="#">Profile</a></li> <li> <a href="#"> <span class="badge pull-right">3</span> Messages </a> </li> </ul> <br /> <!--按鈕勛章--> <button class="btn btn-primary" type="button"> Messages <span class="badge">4</span> </button>
<h3>Example heading <span class="label label-default">New</span></h3> <!--代碼--> <span class="label label-default">默認標簽</span> <span class="label label-primary">主要標簽</span> <span class="label label-success">成功標簽</span> <span class="label label-info">信息標簽</span> <span class="label label-warning">警告標簽</span> <span class="label label-danger">錯誤標簽</span>