Bootstrap框架入门准备

  1. Bootstrap框架重要特性

一套完整的基础CSS插件。

丰富的预定义样式表。

一组基于jQuery的JS插件集。

一个非常灵活的响应式(Responsive)栅格系统,并且崇尚移动先行(Mobile First)的思想。

  1. Bootstrap下载地址
    Bootstrap框架的文件和源码可以在其官方网站(www.getbootstrap.com)下载。打开网站的首页,单击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>
官方网站还提供了各种布局的基本模板供大家使用,大家可以到如下地址进行访问查看:http://getbootstrap.com/getting-started/

  1. CSS基本语法
    Bootstrap的CSS组件的核心就是选择器的定义以及在各自优先级上的处理。
    4.1 优先级
    如何确定CSS的优先级?这里我们要先引入一个机制,分别用4个数字(a,b,c,d)表示优先级组合,比如1,1,1,1和0,1,0,1。它们的意思分别是:
    第一个数字(a)表示style属性,优先级最高。由于一般都是class样式,所以该值一般都是0。
    第二个数字(b)是该CSS选择器上的id数量的总和,一般都是1个。
    第三个数字(c)是用在该CSS选择器上的其他属性CSS选择器以及伪类的总和。这里包括class(.btn)和属性CSS选择器(比如li[id=red])。
    第四个数字(d)计算元素(就像table、p、div等)和伪元素(就像first-child等)。
    通用CSS选择器(*)是0优先级。
    如果两个CSS选择器有同样的优先级,在样式表中后面的那个起作用。
    计算下面两个选择器的优先级:

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

结果肯定是第1个比第2个优先级高,因为第1个的优先级是0,2,0,1,而第2个是0,1,0,2。
4.2 选择器
每一条CSS样式的定义都由两部分组成,形式如下:选择器{样式}。在{}之前的部分就是“选择器”。“选择器”指明了应用这些“样式”的网页元素。
1.属性选择器
Bootstrap的CSS组件里使用了很多属性选择器,比如[data-toggle^=button]、[data-toggle=toggle]等。属性选择器有多种用法
2.子选择器
CSS里的子元素用符号“>”表示。如下示例是表示拥有table样式的表格,其thead元素内的tr元素如果有th的话,则应用该样式。
.table > thead > tr > th { vertical-align: bottom; border-bottom: 2px solid #dddddd; }
3.兄弟选择器
兄弟元素分为两种,一种是临近兄弟,一种是普通兄弟。临近兄弟的选择符用“+”表示。比如导航条里要设置两个li之间的外边距,则需要如下定义:
.nav-pills > li + li { margin-left: 2px; /* 加大左外边距 / }
如果只想查找某一个指定元素后面的兄弟节点(而不限制于临近节点),可以使用普通兄弟节点的符号“~”。比如:
.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中已经定义的显示层次结构。表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的开发规范去开发自己的各种插件了。
5.1 ||和&&运算符
Java Script中的||和&&两个运算符,与其他语言相比略有不同,其符合如下规则:
❑||表示,如果第一个元素可以转换为true,则返回第一个元素的值,否则查询第二个元素的值。如果多个||一起用,则按顺序优先级判断。
❑&&则相反,如果第一个元素可以转换为false,才返回第一个元素的值,否则返回第二个元素的值,多个&&一起用时,也是按顺序优先级判断。
说得严谨一些就是:
❑a && b&& c&&d:返回第一个可转换为false的元素值。
❑a||b||c||d:返回第一个可转换为true的元素值。
上述运算符的转换规则如下:
❑对象为true
❑非零数字为true
❑非空字符串为true
❑其他为false
5.2 立即调用的函数表达式
在JS里,function在定义的时候就可以通过在后面加一个小括号的形式立即进行调用。比如:
(function () { /
code / } ()); // 推荐使用这个
(function () { /
code / })(); // 这个也是可以用的
(function () { /
code / } (1)); // 传入参数1
(function () { /
code / })(2); // 传入参数2
Bootstrap的所有的JS插件都使用了这个模式。比如在alert.js文件里有以下代码:
+function ($) { "use strict"; }(jQuery);
这个文件的意思是声明一个function,然后立即执行,并且在执行的时候传入jQuery对象作为参数。这么做的好处是,此时function内部的$已经是局部变量了,不会再受外部作用域的影响了。
function前面的+号和分号的功能是一样的,主要是防止定义了不符合规定的代码。比如上面的这段代码若没加+号,则代码连接在一起执行就会出错。这样就消除了出错的可能性。不习惯的话,改成这样也行:
;function ($) { "use strict"; }(jQuery);
5.3 原型
在Bootstrap的JS插件里,所有的插件都是利用了类似下面的代码:
Alert.prototype.close = function (e) { /
...*/ }
上面的代码就是在Alert函数上定义一个名为close的原型方法。至于什么叫原型,原型有什么好处,这里我们不会深入讲解,只是举一个例子,简单理解一下就好。
var Calculator = function () {}; Calculator.prototype.add = function (a, b) { return a + b; } var cal = new Calculator(); var sum = cal.add(1, 2);
由于这些内容不是本书的重点,所以这里只需要知道Calculator的实例能调用原型上的add方法就可以了(就像Java和C#里定义的普通方法一样)。
6. jQuery基本用法
本小节主要是介绍与jQuery相关的用法,读者在深入了解这些特性以后,就可以按照Bootstrap的开发规范去开发自己的各种插件了,而不需要精通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在使用时,中间多了一个参数,而且选择器变成了document。它的好处是只在document上绑定一个单击事件,利用冒泡的机制,在单击的时候检查是否是td元素,如果是才处理。而前面我们把td作为选择器的时候,一个页面有多少td元素就会绑定多少个click事件,这样性能会大大降低。这种3个参数的模式称为享元模式。
6.2 事件命名空间
另外,还需要注意的是,这里的事件后面都跟了一些字符串,我们简单称它们为带有命名空间的事件。比如,你声明如下这样的代码:
$('#abc').on("click.tomxu", function (event) { alert(1); });
一般别人触发click事件,都是这样做的:
$('#abc').trigger('click');
执行上述代码,在click时,所有绑定的click事件回调都会被执行。但是如果触发的时候,你不想影响其他click触发代码,这时候就可以只触发自己定义的click事件,以求不会对别人绑定的click回调产生影响,这时可以这样做。
$("#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这个值,则需要调用如下代码:
$("'#abc").data("role");
如果是不带参数的$("'#abc").data();,则表示一次性将所有以data-开头的参数都收集起来,其结果和用如下方式声明一个value变量是一样的。
var value = { role: 'aaa', toggle: 'toggle', xxx: 'tom' };
Bootstrap中的很多JS插件都是利用了这个特性,在HTML元素上定义了一些必要的参数,比如要不要使用动画、是否开启键盘事件等。大家在分析JS插件的option选项参数时即可看到各个参数的详细解释。
7. HTML5辅助设计
在Bootstrap组件里,很多示例里都出现了不是以data-开头的自定义属性,我们称之为辅助属性。这些属性是HTML5新提出的概念,用于支持残障人士、老年人、文化水平不高或暂时患病的人使用屏幕阅读器进行页面访问。这种逐渐增强和易访问的丰富Internet应用程序简称CSS。示例如下:
<div role="navigation " aria-labelledby="myModalLabel" aria-hidden="true"></div>
上述示例中的aria-hidden="true"表示对屏幕阅读器隐藏该div元素,我们称该aria-hidden为CSS状态属性。
示例中的aria-labelledby="myModalLabel"告诉屏幕阅读器,这是一个modal,一般用在区域元素上,它的值一般和标题或是标签元素的ID对应。
假定屏幕阅读器遇到包含role=navigation的页面且其上还有一个div元素,屏幕阅读器就会知道该div元素用于导航,用户将能直接使用导航功能而非通过所有链接选择标签。role支持的属性值。

更多关于CSS的详细内容,可以阅读下面两篇文章:

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 原文链接 http://blog.poetries.top/2016/10/20/review-jQuery 关注...
    程序员poetry阅读 16,641评论 18 503
  • 通过jQuery,您可以选取(查询,query)HTML元素,并对它们执行“操作”(actions)。 jQuer...
    枇杷树8824阅读 652评论 0 3
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,330评论 0 2
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,167评论 0 1
  • 毕业,我们终将面临的问题。 最近一个好闺蜜心情不太好,找我倾诉,一说才知道她正在为要不要回故乡工作而纠结,她现在在...
    小王子大梦想阅读 256评论 0 1