第一次接触神奇的Bootstrap


Posted in Javascript onOctober 14, 2016

作为Web前端开发框架,Bootstrap为大多数标准的UI设计常见提供了用户友好、扩浏览器的解决方案。

1.下载Bootstrap

打开官方网址http://getbootstrap.com/ 进行下载。

第一次接触神奇的Bootstrap

2.准备项目模板文件夹

接下来,我们为第一个项目创建一个文件夹以及一些基本的文件。谓词我们还要用到HTML5样板文件 HTML5 Boilerplate(H5BP),然后把Bootstrap的有用文件复制过去。

2.1 下载H5BP

访问网站链接地址:https://html5boilerplate.com/ ,下载B5BP。

第一次接触神奇的Bootstrap

解压后,修改文件夹名为Bootstrap_First,其目录结构如下:

第一次接触神奇的Bootstrap

2.2然后删除和更新下必要的样板文件

删除下列至于H5BP相关的文件夹和文件:

□ 因为稍后要使用LESS创建自己的CSS文件,所以先删除css文件夹。

□ doc 文件夹及其中内容

2.3 理解样板中的.htaccess文件

这个文件中的内容不一定全部都用,这取决于主机设置和站点需求。这个文件的一个主要用途是保证站点性能最优。

2.4 更新必要的样板文件

样板中的下列文件提供了项目的标准信息,根据需要可以更新它们、直接使用它们或者就放那不管。

□humans.txt:这个文件记载贡献者,H5BP、Bootstrap的,还有其他贡献者。

□LICENSE.txt:在H5BP许可前面,加上你基于该许可构建的网站的许可信息,在H5BP许可后,加上Bootstrap以及其他站点中用到的重要的库的许可信息。

2.5 更新站点桌面和触摸设备图标

不要忘了用自己项目的图标替换 Boilerplate 默认的图标文件。

3.加入Bootstrap文件

3.1 字体

从Bootstrap的主文件夹中,把fonts文件夹复制粘贴到Bootstrap_First文件夹中。这个文件夹里包含着Bootstrap附带的重要的Glyphicon字体。

保险起见,再在fonts文件夹中放一个跨域友好的.htaccess文件:

<FilesMatch "\.(ttf|otf|eot|woff)$"><IfModule mod_headers.c>Header set Access-Control-Allow-Origin "*"</IfModule></FilesMatch>

其目的是保证即使站点根目录下没有放H5BP的.htaccess文件,也不会出现字体问题。

3.2 JavaScript

接下来就是加入Bootstrap的JavaScript文件。H5BP的文件夹中已经包含了几个JavaScript文件如下:

第一次接触神奇的Bootstrap

在js文件夹里新建文件夹bootsreap,然后把Bootstrap的js文件夹中的脚本都复制过来。下面的截图显示了Bootstrap随带的插件。每个插件一个文件:

第一次接触神奇的Bootstrap

把这些插件文件集中保存到新建的js/bootstrap 文件夹,便于优化网站性能,即可以按需选用插件、排除其他文件并缩减文件大小。

在开发期间,保持所有Bootstrap的插件都可用也是一个办法。这样,如果想添加个折叠、提示或者传送带效果,都可以信手拈来。

H5BP采用的方法是把所有插件代码复制到一个 plugins.js模板文件中。这是结束开发之后的最佳做法,因为这样可以减少HTTP请求,加快站点速度。(换句话说,一个80K的文件,比加载4个20K的文件速度更快。)

打开Bootstrap文件夹中包含分发文件的dist文件夹。在这个文件夹中的js文件夹里,包含着 bootstrap.js 和 bootstrap.min.js,它们就是包含 Bootstrap所有插件代码的大文件。

第一次接触神奇的Bootstrap

把bootstrap.min.js 的所有代码复制到plugins.js 里。

然后把Bootstrap文件夹里的less文件夹也复制到项目文件夹中。

4.构造HTML模板

打开项目中的 index.html 文件进行编辑。这个示例标记文件来自H5BP,体现了一些最佳实践和建议方案。我们就以这个为基础,把它整合到Bootstrap的工作流中。

浏览一下整个文件,其中有几个有意思的地方,H5BP文档中都有详细说明,目前的5.3.0版本的链接地址为:https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/extend.md 。下面也简单介绍下,按次序来:

□ HTML5 文档类型声明:

<!doctype html>

□ 接下来是几个meta标签

 ■ 用于指定字符集的:

<meta charset="utf-8">

 ■ 告诉IE使用最新版的渲染引擎

<meta http-equiv="x-ua-compatible" content="ie=edge">

 ■ 预留给描述站点用的:

<meta name="description" content="">

 ■ 针对移动浏览器的视口标签

<meta name="viewport" content="width=device-width, initial-scale=1">

□ 接下来是两个样式表的链接

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

□ 再下面就是加载Modernizr脚本的script标签。这个脚本回味IE8提供HTML5“垫片脚本”,以便它能识别HTML5的分区元素:

<script src="js/vendor/modernizr-2.8.3.min.js"></script>

□ 接下来是IE条件注释,包含推荐用户把旧版本IE升级到新版本的消息:

<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browse. ...
<![endif]-->

□ 紧接着是一段文本

□ 随后是托管在谷歌服务器上的jQuery链接,以及一个本地jQuery的后备链接:

<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script><script>window.jQuery || document.write('<script src="js/vendor/jquery-1.12.0.min.js"><\/script>')</script>

□ 下面就是plugins.js 和main.js的链接,别分保存JavaScript插件代码和我们编写的代码:

<script src="js/plugins.js"></script><script src="js/main.js"></script>

□ 谷歌的Analytics 脚本:

<!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
<script>
 (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
 function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
 e=o.createElement(i);r=o.getElementsByTagName(i)[0];
 e.src='https://www.google-analytics.com/analytics.js';
 r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
 ga('create','UA-XXXXX-X','auto');ga('send','pageview');
</script>

对此次的任务而言,我们需要对这个模板中的元素进行如下操作:

(1) 设定我们站点的标题,针对旧版本浏览器用户更新现有的IE条件注释;

(2) 基于LESS文件编译Bootstrap的CSS,添加基本的页面内容;

(3) 整合Bootstrap的JavaScript插件,确保响应式的导航条(navbar)正常响应。

做完这几件事后,我们就可以开始设计自己的网站了。

5.设定站点标题

<title>初识 Bootstrap</title>

5.1 调整过时的浏览器消息

模板中的消息针对老浏览器用户。

<!--[if lt IE 8]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="
http://browsehappy.com/">
upgrade your browser</a> to improve your experience.</p>
<![endif]-->

其中包含的链接http://browsehappy.com/ ,该网站是一个推荐浏览器升级的站点。

5.2 设置主结构元素

下面开始准备页面内容,目前还只有一个段落。我们可以稍微添加一些内容:

□包含Logo的导航的页头区;

□包含页面内容的内容区;

□包含版权和社交媒体链接的页脚区。

添加这些内容,都会基于最新的HTML最佳实践来做,而且会考虑ARIA(Accessible Rich Internet Applications,可访问富因特网应用)的role属性(即banner、navigation、main和contentinfo 这几个角色)。HTML5后来又增加了 <main cole="main></main> 元素,目的是专门为页面或分区中的主内容提供一个专用的元素。要了解更多信息,可以参照链接:https://www.sitepoint.com/how-to-use-aria-effectively-with-html5/

找到下面的代码:

<!-- Add your site or application content here -->
<p>Hello world! This is HTML5 Boilerplate.</p>

修改为:

<header role="banner">
<nav role="navigation">
</nav>
</header>

<main role="main">
<h1>Main Heading</h1>
<p>Content specific to this page goes here.</p>
</main>

<footer role="contentinfo">
<p><small>Copyright © Luka Ye</small></p>
</footer>

这就是我们页面的基本结构和内容。

6.导航条

我们先把Bootstrap特有的元素设置好,那就是导航条。

作为起点,我们可以暂时就使用 Bootstrap基本的导航条。为此,从Bootstrap文档中拿来它的导航条代码,然后做出如下调整:

□添加了 navbar-static-top 类,因为我们希望导航条能够定位到窗口顶部,但能够随页面滚动而滚动。

□把项目名称连接到 index.html;

□把原来的父div标签改成了语义化的HTML5 nav 标签。

调整后,其header元素如下:

<header role="banner">
<nav role="navigation" class="navbar nav-static-top navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="index.html">初识 Bootstrap</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="index.html">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>
</nav>
</header>

保存结果,其导航条的显示效果如下:

第一次接触神奇的Bootstrap

内容有了。现在,我们特别需要自己的样式表。先来变异并链接Bootstrap默认的样式表。

7.编译和链接默认的Bootstrap CSS

7.1 编译Bootstrap CSS

找到less/bootstrap.less 并打开它,这个文件导入了less文件夹中所有其他文件。编译后,这个文件会生成完整的bootstrap.css样式表。而这就是我们第一步要做的。

PS:LESS的文档地址为http://lesscss.org/

如果一切没有编译过LESS文件,需要下载和安装它的编译器。

□ Window 用户,下载和安装这个编译器:

■ WinLess(免费桌面应用),地址为 http://winless.org

□ Mac 用户可以选择下载:

■ Crunch 应用(免费),地址为 http://crunchapp.net/

■ CodeKit(收费),地址为 http://incident57.com/codekit/

下载了选择的LESS编译器之后,安装,打开。然后就可以按照下面的步骤来做了。

(1) 在根目录创建css文件夹。

第一次接触神奇的Bootstrap

(2) 使用下列的一种把主文件(css、fonts、img、js和 less文件夹的父文件夹)添加到编译器:

■ 把文件夹拖到编译器窗口中;

■ 在编译器窗口中找到 Add folder 按钮,点击选择主文件夹。

(3) 然后再编译器窗口中可以看到加载的LESS文件,找到less/bootstrap.lesss文件

(4) 右键单击less/bootstrap.less 文件,选择 Select output file,找到刚创建的css文件夹,此时输出文件名应该自动会变成bootstrap.css,单击“保存”。

(5) 选择输出路径和文件名,点击Compile。

第一次接触神奇的Bootstrap

(6) css文件夹中会出现编译生成的 bootstrap.css文件。

(7) 编译成功后,唯一要注意的是这个文件名是否与index.html中链接的文件名相同。

(8) 在 index.html 中,删除指向 css/normalize.css 的样式表链接,因为这个样式表已经包含在 Bootstrap中了。

(9) 复制一份bootstrap.css,重命名为main.css。

第一次接触神奇的Bootstrap

(10) 浏览器打开index.html文件,可以看到起默认的导航样式如下,从排版和布局上有所增强,这说明CSS已经生效。

第一次接触神奇的Bootstrap

7.2 完成响应式导航条

为了在 Bootstrap 响应式导航条基础上完成我们的导航条,还得再增加两个新元素,以及相应的类和data属性。相关的用法可以参考 Bootstrap的Components 文档,在Navbar选项卡下:http://getbootstrap.com/components/#navbar

先按照下列步骤添加额外的标记。

(1) 搜索到 <div>,在一个元素中添加一个navbar-toggle按钮,用于展开和收起响应式导航条。下面就是这个按钮的全部标记:

<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">初识 Bootstrap</a>
</div>

简单解释下以上代码:

■ 按钮中的navbar-toggle 类用于应用CSS样式;

■ 后面的数据属性 data-toggle 和 data-target 是Bootstrap 的JavaScript 插件要用的,分部表示预期行为和预期目标(即 collapse 和类名为 navbar-collapse 的元素,这个元素后面会添加)

■ 类名为 icon-bar 的span 元素是CSS用来创建按钮中的三道杠按钮用的。

(2) 接下来把导航项包装在一个收起的div中,即用带有适当 Bootstrap类的div把<ul>包装起来:

<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="index.html">Home</a></li>
<li><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
</ul>
</div>

在前面两步中,我们把代码分分隔成两部分,而且都位于 <div>中。

好了,在任何一个现代浏览器(IE9 或Firefox、Chrome、Safari等的最新版本)中,拖动窗口缩小到小于980像素。其显示效果如下:

第一次接触神奇的Bootstrap

7.3 排除故障

如果一切顺利,那么说明你已经成功地把LESS编译成CSS,而且也成功地包含了Bootstrap的JavaScript插件。如果不顺利,那就要仔细检查下咯。

7.4 支持IE8

要支持IE8,需要一段JavaScript代码让浏览器能响应媒体查询。这段代码就是Scott Jehl的 respond.js “腻子脚本”。

Bootstrap自身的文档推荐这样做以兼容IE8。相关信息可以参考这里:http://getbootstrap.com/getting-started/#browsers

为了针对IE8 应用这段脚本,需要针对IE8的条件注释:

<!--[if lt IE 9]>
...
<![endif]-->

另外,根据Andy Clarke的建议,为了不让并不需要这个脚本的Windows 移动设备加载该脚本,还应该排除IE移动版浏览器,具体参见他的在线代码块 320andup,地址是:https://github.com/malarkey/320andup/ 。

Clarke建议的条件注释如下:

<!--[if (lt IE 9) & (!IEMobile)]>
...
<![endif]-->

有了条件注释,下面就是在站点模板文件中添加腻子脚本了,步骤如下:

(1) 打开https://github.com/scottjehl/Respond ,下载源代码。

第一次接触神奇的Bootstrap

(2) 解压缩,找到名为respond.min.js 的压缩版。

(3) 把它复制到项目文件夹中的 js/vendor 目录下,与jQuery 和 Modernizr放到一块。

第一次接触神奇的Bootstrap

(4) 然后,把下面几行加载 respond.js 文件代码添加到 index.html 中,包括针对IE的条件注释,就加载 Modernizr的代码下面:

<!-- Modernizr --><script src="js/vendor/modernizr-2.8.3.min.js"></script><!-- Respond.js for IE 8 or less only --><!--[if (lt IE 9) & (!IEMobile)]><script src="js/vendor/respond.min.js"></script><![endif]-->

(5) 好了,这样IE8 就可以支持媒体查询响应视口大小变化了。

PS:如果你想测试添加腻子脚本的结果,但又没有IE8 浏览器,可以使用一个在线服务,叫Browsershots,地址是:http://browsershots.org/ ,这是免费的。还有一个收费的,叫BrowserStack,地址是: https://www.browserstack.com/(试用免费)。

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery实战_读书笔记2 选择器
Jan 22 Javascript
JQuery 操作select标签实现代码
May 14 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
Feb 22 Javascript
深入document.write()与HTML4.01的非成对标签的详解
May 08 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
Aug 20 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
详解vue表单——小白速看
Apr 08 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 Javascript
vue实现标签云效果的示例
Nov 09 Javascript
js仿手机页面文件下拉刷新效果
Oct 14 #Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 #Javascript
js关于getImageData跨域问题的解决方法
Oct 14 #Javascript
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 #Javascript
深入学习js瀑布流布局
Oct 14 #Javascript
微信小程序 地图定位简单实例
Oct 14 #Javascript
Bootstrap作品展示站点实战项目2
Oct 14 #Javascript
You might like
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP5.3与5.5废弃与过期函数整理汇总
2014/07/10 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python matplotlib坐标轴设置的方法
2017/12/05 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
adidas美国官网:adidas US
2016/09/21 全球购物
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
办公室文秘岗位职责
2013/11/15 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
酒店中秋节活动方案
2014/01/31 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
python xlwt模块的使用解析
2021/04/13 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python