首页 > 代码库 > 使用 Bootstrap 和 HTML5 Boilerplate 开始一个项目

使用 Bootstrap 和 HTML5 Boilerplate 开始一个项目

下载  Bootstrap

访问下面网站下载最新的 bootstrap 源文件

http://getbootstrap.com/

找到如下所示的下载页面,点击 Download source 按钮即可下载,如果用 Sass 开发,那么把 Sass 文件也下载下来,

解压后,打开 bootstrap 文件夹可以看到里面有一堆文件以及文件夹,大致就像这样,

其中,less 文件夹里面包含了所有的 less 文件,js 文件夹里面包含了12个 js 插件,接下来,我们去下载 HTML5 Boilerplate。

下载 HTML5 Boilerplate

访问 http://html5boilerplate.com/ 获取最新的 HTML5 Boilerplate(H5BP) 文件,解压后我们给文件夹命名为 project1 表示项目1,打开文件夹,可以看到里面包含的内容,如下所示,

删掉不需要的文件

  1. css 文件夹(因为我们会使用 bootstrap 的样式)
  2. CHANGELOG.md
  3. CONTRIBUTING.md
  4. doc 文件夹以及其中的内容

更新需要的文件

  1. humans.txt,里面可以写上整个网站工作团队,对帮助过网站建设的人们致以谢意,以及使用到的开发工具等等。
  2. LICENSE.md,添加上 Bootstrap 和其它框架的许可信息。
  3. README.md,提供一个基本的项目说明。

更新 favicon 和 touch icons

用自己的图标替换掉 H5BP 默认的图标,

  • apple-touch-icon-precomposed.png
  • favicon.ico

不知道怎么生成 ico 图标,点击这里,可以帮助你在线转换

整合 Bootstrap

首先打开 bootstrap 文件夹找到字体 fonts 文件夹,复制到 project1 文件夹里面,该 fonts 文件夹里面是 Bootstrap 自带的 Glyphicon 图标字体文件,这样字体文件就算搞定了。

然后是 javaScript 文件,看看 H5BP 自带的 js 文件,打开 project1 文件夹里面的 js 文件夹,如下所示,

Bootstrap 的插件是依赖于 jQuery 的,可以看到 Boilerplate 已经为我们准备好了(vendor 文件夹中),另外一个 Modernizr 脚本,其中包含了 HTML5 shiv,可以让 IE8 兼容,不过它更大的作用是对浏览器进行了特性检测。plugin.js 文件用于放置插件,在这里新建一个文件夹命名为 bootstrap,用于放置 Bootstrap 插件,把 Bootstrap 中的 js 文件夹里面的插件复制到这个文件夹里面来,如下所示,

不出意外的话,应该有12个插件(不排除以后会增加或者减少的可能),可以根据需要选择使用某些插件,也可以一把抓,把全部插件引用进来,一个一个的引用实在是徒然增加 HTTP 请求,所以得把全部插件放入一个文件中,将 Bootstrap 插件全部放入 plugins.js 文件中,找到已经打包好的代码,打开 bootstrap/dist/js/bootstrap.min.js 全选所有代码复制粘贴到 plugins.js 中,就行了。

最后是样式文件,复制整个 bootstrap/less 文件夹到 project1 中。

至此,Bootstrap 中需要的内容已经全部整合到 project1 中来了,project1 里面的内容如下所示,

其中 fonts 文件夹里面包含了 Glyphicon 字体文件,img 文件夹是空的,less 文件夹是从 Bootstrap 复制来的(如果使用 Sass 进行开发,那么这里就是 Sass 文件夹),js 文件夹如下所示,

我想了解更多关于 Modernizr 的内容。

设置首页

回到 project1 主目录,用可爱的文本编辑器打开 index.html,注意不是用浏览器打开,可以看到如下内容,

 1 <!DOCTYPE html> 2 <!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 3 <!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 4 <!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]--> 5 <!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> 6     <head> 7         <meta charset="utf-8"> 8         <meta http-equiv="X-UA-Compatible" content="IE=edge"> 9         <title></title>10         <meta name="description" content="">11         <meta name="viewport" content="width=device-width, initial-scale=1">12 13         <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->14 15         <link rel="stylesheet" href="css/normalize.css">16         <link rel="stylesheet" href="css/main.css">17         <script src="js/vendor/modernizr-2.6.2.min.js"></script>18     </head>19     <body>20         <!--[if lt IE 7]>21             <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>22         <![endif]-->23 24         <!-- Add your site or application content here -->25         <p>Hello world! This is HTML5 Boilerplate.</p>26 27         <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>28         <script>window.jQuery || document.write(<script src="http://www.mamicode.com/js/vendor/jquery-1.10.2.min.js"><\/script>)</script>29         <script src="js/plugins.js"></script>30         <script src="js/main.js"></script>31 32         <!-- Google Analytics: change UA-XXXXX-X to be your site‘s ID. -->33         <script>34             (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=35             function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;36             e=o.createElement(i);r=o.getElementsByTagName(i)[0];37             e.src=//www.google-analytics.com/analytics.js;38             r.parentNode.insertBefore(e,r)}(window,document,script,ga));39             ga(create,UA-XXXXX-X);ga(send,pageview);40         </script>41     </body>42 </html>

需要修改部分代码,

14 <link rel="stylesheet" href="css/normalize.css">15 <link rel="stylesheet" href="css/main.css">

首先删掉上面两行引入样式表的代码,因为 Bootstrap 已经内置了 normalize.css,这里不需要再引入了,而且我们根本早就已经删除了这两个 CSS 文件了,同时新增一行引入 Bootstrap 样式表的代码,

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

等等,现在 project1 里面根本没有这个样式文件,目前可以有两种做法,

1.从 bootstrap/dist/css 里面复制一个编译好的 bootstrap.css 到 project1/css(这个文件夹需要新建一个)中。

2.用 Less 文件(或者 Sass)编译成 CSS。

说说第二个方法,首先需要安装 Less,在node.js中使用Node包管理工具npm来安装:

$ npm install -g less

安装完成后就可以用了:

$ lessc less/bootstrap/bootstrap.less css/bootstrap.css

好了,假设以上两种方法已经完成其中一个了,继续向下,样式搞定了,应该轮到脚本了,由于 IE 8 并不支持媒体查询,需要去下载一个脚本(响应式布局,没有媒体查询怎么玩得转呢),点我去往下载的路上,下载好后,把 respond.min.js 文件放在 project1/js/vendor 中,然后在页面上添加以下代码,

<!-- 只让 IE 8 以及更低版本的浏览器下载该脚本 --><!--[if (lt IE 9) & (!IEMobile)]><script src="http://www.mamicode.com/js/vendor/respond.min.js"></script><![endif]-->

就写在引入 Modernizr 脚本的代码后面就行,这样,IE 8及以下的浏览器也能支持媒体查询了,接下来有个条件注释需要稍微修改一下,由于 Bootstrap 已经不再支持 IE7,所以,我们要让 IE 7 和 IE 6 一同坠入地狱(其实就多了一句升级浏览器的提示而已),

20 <!--[if lt IE 7]> 改成 <!--[if lte IE 7]>

全部搞定,剩下的事情就是添加页面的主体内容了。

资源列表

  • Bootstrap
  • HTML5 Boilerplate
  • Less
  • Sass
  • Normalize.css
  • Modernizr
  • Respond.js

参考资料

Bootstrap Site Blueprints: Design mobile-first responsive websites with Bootstrap 3 by David Cochran & Ian Whitley