Bootstrap框架入門準備

  1. Bootstrap框架重要特性

一套完整的基礎CSS插件。

豐富的預定義樣式表琉雳。

一組基于jQuery的JS插件集。

一個非常靈活的響應式(Responsive)柵格系統(tǒng),并且崇尚移動先行(Mobile First)的思想图呢。

  1. Bootstrap下載地址
    Bootstrap框架的文件和源碼可以在其官方網(wǎng)站(www.getbootstrap.com)下載。打開網(wǎng)站的首頁,單擊Download Bootstrap按鈕蛤织,跳轉到下載頁面赴叹。
    3. HTML標準模板
    HTML標準模板如下:
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap基礎模板</title>

    <link href="css/bootstrap.min.css" rel="stylesheet">

</head>
<body>
<h1>Hello, world!</h1>

<script src="https:// code.jquery.com/jquery.js"></script>

<script src="js/bootstrap.min.js"></script>
</body>
</html>
官方網(wǎng)站還提供了各種布局的基本模板供大家使用,大家可以到如下地址進行訪問查看:http://getbootstrap.com/getting-started/

  1. CSS基本語法
    Bootstrap的CSS組件的核心就是選擇器的定義以及在各自優(yōu)先級上的處理指蚜。
    4.1 優(yōu)先級
    如何確定CSS的優(yōu)先級乞巧?這里我們要先引入一個機制,分別用4個數(shù)字(a摊鸡,b绽媒,c,d)表示優(yōu)先級組合免猾,比如1是辕,1,1掸刊,1和0,1赢乓,0忧侧,1。它們的意思分別是:
    第一個數(shù)字(a)表示style屬性牌芋,優(yōu)先級最高蚓炬。由于一般都是class樣式,所以該值一般都是0躺屁。
    第二個數(shù)字(b)是該CSS選擇器上的id數(shù)量的總和肯夏,一般都是1個。
    第三個數(shù)字(c)是用在該CSS選擇器上的其他屬性CSS選擇器以及偽類的總和犀暑。這里包括class(.btn)和屬性CSS選擇器(比如li[id=red])驯击。
    第四個數(shù)字(d)計算元素(就像table、p耐亏、div等)和偽元素(就像first-child等)徊都。
    通用CSS選擇器(*)是0優(yōu)先級。
    如果兩個CSS選擇器有同樣的優(yōu)先級广辰,在樣式表中后面的那個起作用暇矫。
    計算下面兩個選擇器的優(yōu)先級:

leftbar li#first { color: red; } #leftbar li:first-child{ color: blue; }

結果肯定是第1個比第2個優(yōu)先級高,因為第1個的優(yōu)先級是0择吊,2李根,0,1几睛,而第2個是0房轿,1,0,2冀续。
4.2 選擇器
每一條CSS樣式的定義都由兩部分組成琼讽,形式如下:選擇器{樣式}。在{}之前的部分就是“選擇器”钻蹬。“選擇器”指明了應用這些“樣式”的網(wǎng)頁元素凭需。
1.屬性選擇器
Bootstrap的CSS組件里使用了很多屬性選擇器,比如[data-toggle^=button]粒蜈、[data-toggle=toggle]等。屬性選擇器有多種用法
2.子選擇器
CSS里的子元素用符號“>”表示枯怖。如下示例是表示擁有table樣式的表格,其thead元素內(nèi)的tr元素如果有th的話度硝,則應用該樣式。
.table > thead > tr > th { vertical-align: bottom; border-bottom: 2px solid #dddddd; }
3.兄弟選擇器
兄弟元素分為兩種蕊程,一種是臨近兄弟,一種是普通兄弟藻茂。臨近兄弟的選擇符用“+”表示。比如導航條里要設置兩個li之間的外邊距辨赐,則需要如下定義:
.nav-pills > li + li { margin-left: 2px; /* 加大左外邊距 / }
如果只想查找某一個指定元素后面的兄弟節(jié)點(而不限制于臨近節(jié)點),可以使用普通兄弟節(jié)點的符號“~”掀序。比如:
.article h1 ~ p { font-size: 13px; }
4.3 偽類
CSS3提供了非常多的可用偽類,但是Bootstrap只用了常用的幾個森枪,這里我們只簡單列一下常用的偽類和其對應的意思视搏,具體如表1-5所示。
舉個例子县袱,按鈕組里浑娜,除第一個按鈕、最后一個按鈕和帶有dropdown-toggle樣式的元素外式散,其他btn樣式的按鈕都不能設置圓角筋遭。我們應該這么定義:
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; }
4.4 display屬性
這個屬性用于定義建立布局時元素生成的框的類型。對于HTML等文檔類型,如果使用display時不謹慎會很危險漓滔,因為可能違反HTML中已經(jīng)定義的顯示層次結構编饺。表1-6是display支持的常見屬性值和意義。
4.5 媒體查詢
媒體查詢是進行響應式設計的核心要素响驴,其功能非常強大透且。這里我們只列出Bootstrap用到的功能,具體可以訪問http://www.w3.org/TR/css3-mediaqueries/進行查看豁鲤。
Bootstrap主要用到min-width秽誊、max-width,以及and語法琳骡,用于在不同的分辨率下設置不同的CSS樣式锅论。
@media (max-width: 767px) { /
在小于768像素的屏幕里,這里的樣式才生效/ } @media (min-width: 768px) and (max-width: 991px) { /在768和991像素之間的屏幕里,這里的樣式才生效/ } @media (min-width: 992px) and (max-width: 1199px) { /在992和1199像素之間的屏幕里,這里的樣式才生效/ } @media (min-width: 1200px) { /在大于1200像素的屏幕里,這里的樣式才生效/ }
5.JavaScript基本語法
主要介紹JavaScript的基本用法。理解這些用法以后楣号,就可以按照Bootstrap的開發(fā)規(guī)范去開發(fā)自己的各種插件了最易。
5.1 ||和&&運算符
Java Script中的||和&&兩個運算符,與其他語言相比略有不同炫狱,其符合如下規(guī)則:
?||表示藻懒,如果第一個元素可以轉換為true,則返回第一個元素的值毕荐,否則查詢第二個元素的值束析。如果多個||一起用艳馒,則按順序優(yōu)先級判斷憎亚。
?&&則相反,如果第一個元素可以轉換為false弄慰,才返回第一個元素的值第美,否則返回第二個元素的值,多個&&一起用時陆爽,也是按順序優(yōu)先級判斷什往。
說得嚴謹一些就是:
?a && b&& c&&d:返回第一個可轉換為false的元素值。
?a||b||c||d:返回第一個可轉換為true的元素值慌闭。
上述運算符的轉換規(guī)則如下:
?對象為true
?非零數(shù)字為true
?非空字符串為true
?其他為false
5.2 立即調(diào)用的函數(shù)表達式
在JS里别威,function在定義的時候就可以通過在后面加一個小括號的形式立即進行調(diào)用。比如:
(function () { /
code / } ()); // 推薦使用這個
(function () { /
code / })(); // 這個也是可以用的
(function () { /
code / } (1)); // 傳入?yún)?shù)1
(function () { /
code / })(2); // 傳入?yún)?shù)2
Bootstrap的所有的JS插件都使用了這個模式驴剔。比如在alert.js文件里有以下代碼:
+function ($) { "use strict"; }(jQuery);
這個文件的意思是聲明一個function,然后立即執(zhí)行丧失,并且在執(zhí)行的時候傳入jQuery對象作為參數(shù)。這么做的好處是训堆,此時function內(nèi)部的$已經(jīng)是局部變量了坑鱼,不會再受外部作用域的影響了权薯。
function前面的+號和分號的功能是一樣的盟蚣,主要是防止定義了不符合規(guī)定的代碼。比如上面的這段代碼若沒加+號阐枣,則代碼連接在一起執(zhí)行就會出錯奄抽。這樣就消除了出錯的可能性逞度。不習慣的話,改成這樣也行:
;function ($) { "use strict"; }(jQuery);
5.3 原型
在Bootstrap的JS插件里俊戳,所有的插件都是利用了類似下面的代碼:
Alert.prototype.close = function (e) { /
...*/ }
上面的代碼就是在Alert函數(shù)上定義一個名為close的原型方法馆匿。至于什么叫原型渐北,原型有什么好處,這里我們不會深入講解恃锉,只是舉一個例子呕臂,簡單理解一下就好诵闭。
var Calculator = function () {}; Calculator.prototype.add = function (a, b) { return a + b; } var cal = new Calculator(); var sum = cal.add(1, 2);
由于這些內(nèi)容不是本書的重點,所以這里只需要知道Calculator的實例能調(diào)用原型上的add方法就可以了(就像Java和C#里定義的普通方法一樣)瘟芝。
6. jQuery基本用法
本小節(jié)主要是介紹與jQuery相關的用法,讀者在深入了解這些特性以后晤郑,就可以按照Bootstrap的開發(fā)規(guī)范去開發(fā)自己的各種插件了造寝,而不需要精通jQuery的全部用法诫龙。
在學習jQuery相關的用法之前,首先要確保所有的CSS選擇器都能在jQuery里使用签赃,比如$('[data-toggle^=button]')锦聊。如果遇到任何不明白的選擇器孔庭,請查詢CSS相關的語法材蛛。
6.1 事件綁定
jQuery的on和off分別用于綁定和禁用事件。例如:
$('td').on("click", function (event) { // 綁定abc元素上的click事件,單擊時彈出提示 alert(1); }); $('td).off('click'); // 禁用abc元素上的click事件
但是對于Bootstrap框架构资,它對jQuery的on和off的使用稍有不同。它使用了另外一種語法迹淌,例如:
$(document).on('click.bs.carousel.data-api','td',function (e){}; $(document).off('.carousel.data-api');
上述的on在使用時,中間多了一個參數(shù)耙饰,而且選擇器變成了document苟跪。它的好處是只在document上綁定一個單擊事件,利用冒泡的機制笋额,在單擊的時候檢查是否是td元素兄猩,如果是才處理鉴未。而前面我們把td作為選擇器的時候,一個頁面有多少td元素就會綁定多少個click事件淹真,這樣性能會大大降低连茧。這種3個參數(shù)的模式稱為享元模式梅屉。
6.2 事件命名空間
另外坯汤,還需要注意的是,這里的事件后面都跟了一些字符串惰聂,我們簡單稱它們?yōu)閹в忻臻g的事件搓幌。比如,你聲明如下這樣的代碼:
$('#abc').on("click.tomxu", function (event) { alert(1); });
一般別人觸發(fā)click事件处铛,都是這樣做的:
$('#abc').trigger('click');
執(zhí)行上述代碼撤蟆,在click時家肯,所有綁定的click事件回調(diào)都會被執(zhí)行盟猖。但是如果觸發(fā)的時候,你不想影響其他click觸發(fā)代碼圃泡,這時候就可以只觸發(fā)自己定義的click事件愿险,以求不會對別人綁定的click回調(diào)產(chǎn)生影響辆亏,這時可以這樣做扮叨。
$("#abc").trigger('click.tom.xu');
6.3 $.data()
很多JS插件里都使用了$(selector).data()方法,它的意思是收集指定元素上的所有以data-開頭的自定義屬性碍沐,并合并成為一個對象字面量累提。
對于以data-開頭的自定義屬性斋陪,相信大家都知道它是HTML5新支持的語法无虚。比如:
<div id="abc" data-role="aaa" data-toggle="toggle" data-xxx="tom"></div>
如果要獲取data-role里aaa這個值衍锚,則需要調(diào)用如下代碼:
$("'#abc").data("role");
如果是不帶參數(shù)的$("'#abc").data()戴质;,則表示一次性將所有以data-開頭的參數(shù)都收集起來斗埂,其結果和用如下方式聲明一個value變量是一樣的。
var value = { role: 'aaa', toggle: 'toggle', xxx: 'tom' };
Bootstrap中的很多JS插件都是利用了這個特性男娄,在HTML元素上定義了一些必要的參數(shù),比如要不要使用動畫建瘫、是否開啟鍵盤事件等啰脚。大家在分析JS插件的option選項參數(shù)時即可看到各個參數(shù)的詳細解釋粒梦。
7. HTML5輔助設計
在Bootstrap組件里匀们,很多示例里都出現(xiàn)了不是以data-開頭的自定義屬性准给,我們稱之為輔助屬性露氮。這些屬性是HTML5新提出的概念畔规,用于支持殘障人士、老年人详民、文化水平不高或暫時患病的人使用屏幕閱讀器進行頁面訪問。這種逐漸增強和易訪問的豐富Internet應用程序簡稱CSS兔综。示例如下:
<div role="navigation " aria-labelledby="myModalLabel" aria-hidden="true"></div>
上述示例中的aria-hidden="true"表示對屏幕閱讀器隱藏該div元素涧窒,我們稱該aria-hidden為CSS狀態(tài)屬性锭亏。
示例中的aria-labelledby="myModalLabel"告訴屏幕閱讀器戴已,這是一個modal,一般用在區(qū)域元素上伐坏,它的值一般和標題或是標簽元素的ID對應桦沉。
假定屏幕閱讀器遇到包含role=navigation的頁面且其上還有一個div元素永部,屏幕閱讀器就會知道該div元素用于導航苔埋,用戶將能直接使用導航功能而非通過所有鏈接選擇標簽蜒犯。role支持的屬性值组橄。

更多關于CSS的詳細內(nèi)容,可以閱讀下面兩篇文章:

?http://msdn.microsoft.com/zh-cn/magazine/jj863135.aspx

?http://www.zhangxinxu.com/wordpress/?p=2277

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罚随,一起剝皮案震驚了整個濱河市玉工,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淘菩,老刑警劉巖遵班,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異潮改,居然都是意外死亡狭郑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門汇在,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事$韫” “怎么了咆瘟?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵灸眼,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好维雇,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般撞鹉。 火紅的嫁衣襯著肌膚如雪发皿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天夹界,我揣著相機與錄音丙者,去河邊找鬼评汰。 笑死惨缆,一個胖子當著我的面吹牛瓢阴,可吹牛的內(nèi)容都是我干的叠穆。 我是一名探鬼主播嚷硫,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼会烙,長吁一口氣:“原來是場噩夢啊……” “哼残腌!你這毒婦竟也來了逾滥?” 一聲冷哼從身側響起舔哪,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逞敷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡虑瀑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年舌狗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枫夺。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡确封,死狀恐怖诡曙,靈堂內(nèi)的尸體忽然破棺而出略水,到底是詐尸還是另有隱情价卤,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布渊涝,位于F島的核電站慎璧,受9級特大地震影響床嫌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胸私,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一既鞠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盖文,春花似錦嘱蛋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疙驾,卻和暖如春凶伙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背它碎。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工函荣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扳肛。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓傻挂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挖息。 傳聞我的和親對象是個殘疾皇子金拒,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關注...
    程序員poetry閱讀 16,635評論 18 503
  • 通過jQuery,您可以選忍赘埂(查詢绪抛,query)HTML元素,并對它們執(zhí)行“操作”(actions)电禀。 jQuer...
    枇杷樹8824閱讀 649評論 0 3
  • 1.JQuery 基礎 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式幢码。設計者無需花費時間糾纏JS復雜的高級特性。 1....
    LaBaby_閱讀 1,325評論 0 2
  • 1.JQuery 基礎 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式尖飞。設計者無需花費時間糾纏JS復雜的高級特性症副。 1....
    LaBaby_閱讀 1,162評論 0 1
  • 畢業(yè)腋么,我們終將面臨的問題咕娄。 最近一個好閨蜜心情不太好,找我傾訴珊擂,一說才知道她正在為要不要回故鄉(xiāng)工作而糾結圣勒,她現(xiàn)在在...
    小王子大夢想閱讀 253評論 0 1