HTML5 ボイラープレート

WBOY
WBOYオリジナル
2016-06-24 11:51:262407ブラウズ

最近、HTML5 ボイラープレート テンプレートを見て、体系的に勉強して理解しました。さまざまな CSS ライブラリや JS フレームワークが次々と登場している今日、このような優れた HTML テンプレートを見るのは非常にうれしいことです。ブログを書いてみんなに勧めましょう。

1: HTML5 ボイラープレートとは何ですか?どのような問題が解決されましたか?

この人のことを初めて聞いたとき、きっとこんな疑問を抱いたはずです!ネットで調べてみると、多くの人がこれを Bootstrap と同じものだと考えていることがわかりました。これは本当に間違っています。

実際、HTML5 ボイラープレートは単なる単純な HTML テンプレートです。

え? HTMLテンプレート?何に使われますか?

すべてのフロントエンド開発者が遭遇するであろう問題について言及しなければなりません。新しいページを作成するとき、毎回どうやって作成すればよいでしょうか。 doctype、html、head、body、meta タグは書くのがとても面倒です。または、以前のプロジェクトからコピーするか、Bootstrap が推奨するテンプレートなどをコピーします。しかし、これらのことをするときに、自分の書き方が最善かどうか考えたことはありますか?それとも、業界はこれに関して比較的統一された推奨事項を持っていますか?答えは「はい」です。

HTML5 ボイラープレートは、すべてのページがこのルールに従っているように見える非常に完全な 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 ボイラープレートのすべてと言えます。ざっと見てみると、確かに今までと同じような書き方をしているものもあれば、見たことのない書き方をしている、あるいは、こんなことも書いているということもあるでしょう。このようにしてますが、その理由について考えたことはありません。次に、まずこの HTML ファイルを「分析」してみましょう。

2: 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、および lt よりも下位であることを意味します。それぞれ -ie7 。機能は何ですか?実は最大の問題はCSS HACKを書くときです。このように書くとCSS HACKは必要ありません。たとえば、ie6の場合、htmlタグにlt-ie7クラスが存在します。 CSS 優先度を直接使用して、以前の設定を上書きすることができます。

次に、特別な部分は最後の文にある必要があります。最後の文は、ie8 以降のすべてのブラウザが 4a89a23ee4a3a3490bd7c62ddf28a80d HTML ヘッダーを使用することを意味します。よく見ると、内部にいくつかの不完全な注釈タグが追加されていることがわかります。 IE8 より大きい IE ブラウザでは、これらのタグは完全に無視されます。 IE 以外のブラウザの場合。 [if gt IE 8] が認識されないため、以下のコメントと併せて全体がコメント化されていることがわかります。このようにして、最も完璧なブラウザ識別が実現されます。

次に、no-js クラスがあります。これは後ほど主に modernizr.js と併用します。ブラウザーで js が有効になっている場合、modernizr は 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目录下有main和normalize

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

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

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

 

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算是全部理完了,很简单的一个项目,但是很实用,也很漂亮。可以作为开发标配。

 

 

 

转载本站文章请注明作者和出处  ,请勿用于任何商业用途

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。