转载地址:HTML5 Boilerplate是什么

HTML5 Boilerplate是什么?解决了什么问题?

对于第一次听说这个人,肯定都有这个疑问把!在网上看了看,发现很多人都认为这个是和Bootstrap一样的东西,这真是大错特错了。

实际上,HTML5 Boilerplate只是一个单纯的HTML模版。

什么?HTML模版?干嘛用?

这里不得不提所有前端开发都会遇到的问题,每次要重新弄一个页面的时候,你们都是怎么做的呢?那个doctype、html、head、body、meta标签,写的多心烦。或者从以前的项目中复制,或者抄一抄Bootstrap推荐的模版等等。但是在做这些事情的时候,有没有想过,自己的写法是否是最好的呢?或者说业界对这个有没有一个比较统一的推荐?那么,答案是有的。

HTML5 Boilerplate就是解决了这么一个问题,它提供了一个十分完善的HTML模版,完善到所有的页面似乎都应该遵守这个规则。

说的这么神乎其神,那么我们还是要一看究竟才行。从官网下载 然后,最核心的的是一个index.html文件,不大,我们来看看它的源码:

<!DOCTYPE html>

<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->

<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->

<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->

<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->

    <head>

        <meta charset="utf-8">

        <meta http-equiv="X-UA-Compatible" content="IE=edge">

        <title></title>

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

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

        <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->

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

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

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

    </head>

    <body>

        <!--[if lt IE 7]>

            <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>

        <![endif]-->

        <!-- Add your site or application content here -->

        <p>Hello world! This is HTML5 Boilerplate.</p>

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>

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

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

        <!-- 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='//www.google-analytics.com/analytics.js';

            r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));

            ga('create','UA-XXXXX-X');ga('send','pageview');

        </script>

    </body>

</html>

这可以说就是HTML5 Boilerplate的全部了。大概看一下,肯定会发现有些是和自己以前的写法一样的,有些又是没见过的写法,或者说自己也是这么写的但是从来没想过为什么。下面,就先“解剖”下这个HTML文件把。

浅析index.html

文档声明

首先,文档类型使用了HTML5文档声明,比起HTML4的那一大长串,这个明显简单明了。而且,兼容全部浏览器。因为IE在设计的时候,对于这种写法也会进入标准模式。所以,以后的文档声明都这样写,省心。

然后,是这么一大段

<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->

<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->

<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->

<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->

这段代码很经典。

首先,我们先看这些条件判断,意思分别是低于IE7,等于IE7,等于IE8,高于IE8。

然后条件注释里面,就有相应的类名,比如在 lt IE 7中,html标签上便会有  lt-ie9 lt-ie8 lt-ie7这3个类,意思分别是低于ie7、8、9 。有什么用呢?其实最大的左右就是在写CSS HACK的时候,因为这样写,就可以不用CSS HACK了,比如如果是ie6,那么html标签上就会有 lt-ie7这个类,直接用CSS优先级覆盖之前的设置即可。

然后特殊的地方应该就在最后一句了,最后一句的意思是所有大于ie8和非ie浏览器都使用<html class="no-js">这个html头。仔细看会发现里面加了几个残缺的注释标签。有什么用呢,对于大于ie8的ie浏览器,这几个标签完全忽略。对于非ie浏览器。由于不识别[if gt IE 8],然后和后面的注释一起,会发现整个这部分都被注释了。这样,就实现了最完美的浏览器识别了。

然后还有一个no-js类。这个主要是会和后面的modernizr.js一起使用。因为modernizr会在浏览器启用的js的时候,把no-js换成js。简单来说这个类可以用来判断浏览器是否启用了js。

接着,就是

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<title></title>

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

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

首先,先设置文档编码,记住这个放最前面(特别注意别放title后面),以免后面代码出现乱码。

接下来便是设置IE使用最新版本来渲染

然后是描述,便于SEO
viewport指定移动端不对网页进行缩放。

这些个元标签基本都是一个网页必须要有的,所以大家可以检查下自己的网站是否漏了什么。 

之后,引入了normalize、main两个css。modernizr这个js。关于这3个文件,后面再详细说明。

主体部分。

首先,看到这么一段

<!--[if lt IE 7]>

      <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>

<![endif]-->

对于使用低于IE7版本的用户,给出升级提示,当然,我们可以选择删除这一段或者换成一个中文提示。

然后呢,便是这一段脚本

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>

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

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

首先,通过CDN引入jquery。这里用的是谷歌的CDN。如果这段照抄,那么,,嘿嘿,网站肯定杯具了。所以这里换成国内的jqueryCDN,比如七牛。

然后,判断jQuery对象是否存在。因为CDN有可能挂了。如果jQuery对象不存在,那么我们就可以用自己服务器的jquery。

然后引入了plugins.js还有main.js。main.js是空的,plugins.js后面详细说明。

最后一段代码就是引入google统计了。这里,根据自己的需要换成百度统计或者是别的。就不详细说了。

至此,HTML5 Boilerplate的最关键的模版HTML算是讲完了。以后要新弄一个页面,就照着这个copy。

不过,HTML5 Boilerplate提供的还不止这些,下面讲讲单个文件的作用。

静态文件

打开项目代码,可以看到有挺多的文件的,有些是说明文件,比如doc/路径下的,就不讲了,有些是值得讲讲的,比如css/ js/下的部分文件。挑几个有趣的说说把。

CSS目录

首先 css目录下有main和normalize。

normalize也许大家都听过,就是一个浏览器重置,里面的每一条css都是进过千千万万的人精挑细选的,基本上这个重置属于公认的了。

里面的具体每条规则就不细讲了,可以百度查看这个项目的文档,或者直接看注释也ok。

main就是改项目对normalize的补充,可以看到提供了一些基础类名方便大家,比如图片置换,清除浮动等等。

JS

js提供了个plugins.js


代码如下

// Avoid `console` errors in browsers that lack a console.

(function() {

    var method;

    var noop = function () {};

    var methods = [

        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',

        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',

        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',

        'timeStamp', 'trace', 'warn'

    ];

    var length = methods.length;

    var console = (window.console = window.console || {});

    while (length--) {

        method = methods[length];

        // Only stub undefined methods.

        if (!console[method]) {

            console[method] = noop;

        }

    }

}());

比较简单,就不说明了。解决的主要问题就是用console调试的时候IE报错。这个问题我想大家都遇见过,调试代码忘记删除,线上IE报错,导致js无法继续执行。加了这个,就可以避免掉这问题了。

还有就是modernizr了,这是个强大的浏览器功能检查js,具体使用可以在官网上看看教程,这里就不说了。

然后,还提供了一些个文件,比如apache的配置htaccess、 404页面、flash跨域需要的文件crossdomain.xml、爬虫过滤文件robots.txt等,大家按需使用。

至此,HTML5 Boilerplate算是全部理完了,很简单的一个项目,但是很实用,也很漂亮。可以作为开发标配。

HTML5 Boilerplate是什么?解决了什么问题?相关推荐

  1. HTML5 Boilerplate - 让页面有个好的开始

    最近看到了HTML5 Boilerplate模版,系统的学习与了解了一下.在各种CSS库.JS框架层出不穷的今天,能看到这么好的HTML模版,感觉甚爽.写篇博客,推荐给大家使用. 一:HTML5 Bo ...

  2. 专访HTML5 Boilerplate项目核心成员——石川

    HTML5 Boilerplate项目是一个出色的前端开发框架,知乎上有一个话题介绍了该项目的特性.在项目的核心开发人员中,有一位华人,他就是石川. 前不久,InfoQ对石川进行了专访. InfoQ: ...

  3. html5 boilerplate 教程,HTML5 Boilerplate

    最近看到了HTML5 Boilerplate模版,系统的学习与了解了一下.在各种CSS库.JS框架层出不穷的今天,能看到这么好的HTML模版,感觉甚爽.写篇博客,推荐给大家使用. 一:HTML5 Bo ...

  4. HTML5 Boilerplate介绍

    一:HTML5 Boilerplate是什么?解决了什么问题? 对于第一次听说这个人,肯定都有这个疑问把! 实际上,HTML5 Boilerplate只是一个单纯的HTML模版. 什么?HTML模版? ...

  5. HTML5 Boilerplate浅析

    HTML5 Boilerplate浅析 简介 HTML5 Boilerplate--最流行的web开发前端模版,帮你构建 快速, 健壮, 并且 适应力强 的web app或网站. 其特点如下: 一个干 ...

  6. 基于HTML5 Boilerplate创建自己的项目

    web 开发团队的一个常见实践是创建一组标准文件,团队成员基于它们开始 web 开发流程,包括一个公共文件结构.基本命名惯例和标准库. 这样做能够更容易启动并运行一个项目.它还能将开发人员引向内部编码 ...

  7. html右侧有白边,html5有白边解决办法

    html5有白边解决办法 html5底部有白边 给div或img加{vertical-align:bottom;display:block} 属性完美解决 另外附上一段html5初始化css html ...

  8. html5 视口,HTML5样板:元视口和宽度=设备宽度(HTML5 Boilerplate: Meta viewpo

    我建立一个自适应/响应的网站. 对此近期变化的HTML5BP: " 移动/ iOS的CSS的修改 " 我已经开始使用: ......我有这在我的CSS: html { -webki ...

  9. html5 游戏 限制,HTML5新技术让游戏解决了三个大问题

    原标题:HTML5新技术让游戏解决了三个大问题 如今,手游已经成为了人们娱乐生活的一部分,不管是在大街上还是地铁上我们总能看到埋头玩手游的人,不过现阶段手机游戏还是存在三个不方便的地方: 1.安卓与i ...

最新文章

  1. 传感器是大数据的重要来源
  2. linux shell 下载并执行
  3. php fastcgi_finish_request用法
  4. vulnhub_内网渗透测试的记录——网络安全
  5. 使用Azure Pipelines从GitHub发布NuGet包
  6. 基于 Springboot 和 Mybatis 的后台管理系统 BootDo
  7. oracle里子连接查询,pc端页面滚动到底部加载更多数据......
  8. 【牛腩1】--- 服务器错误:编译错误
  9. mysql安装方法_MySQL安装的三种方式
  10. 三维点云学习(3)8- 实现Spectral谱聚类
  11. 数据结构上机实践第二周项目1
  12. 【边尝试边写博客】入侵学校服务器
  13. python编程入门——快乐的数字
  14. [笑话] 有关本人现在是独身的消息不甚走漏
  15. 人工智能换脸技术python_人工智能几行代码实现换脸,python+dlib实现图文教程
  16. mysql中的四种注释
  17. 辰视智能冯良炳:让机器人拥有灵敏的眼睛!
  18. 电商平台之争,京东是如何脱颖而出的
  19. MVVM和MVC模型
  20. web渗透--3--web安全原则(下)

热门文章

  1. java期末考试知识点复习总结
  2. Java中合法的关键词_优秀程序员必须掌握的java中50个关键字
  3. 游戏高级场景关卡设计师(深圳)
  4. 国内那几家在线语音合成做得比较好?
  5. 淘宝小程序开发——请求封装
  6. robstudio 输送链工件_教你如何创建ABB机器人RobotStudio喷涂工作站
  7. iis服务器怎样配置多张证书,IIS:管理多个 Web 服务器上的多个证书 | Microsoft Docs...
  8. Bluetooth porting
  9. XTP(Xtreme ToolkiPro)2007 Vol 2 (11.2.1) 使用心得 No.1 CXTPPropertyGrid类测试
  10. self_drive car_学习笔记--第10课:路径规划