このページの本文へ

ここが変わった!HTML5マークアップ入門 (5/6)

2011年08月01日 13時00分更新

文●浜 俊太朗/ライブドア

  • この記事をはてなブックマークに追加
本文印刷

HTML5を使うときに必要な準備

 現時点でHTML5を使用する場合には、未対応のブラウザーのために簡単な準備が必要です。

古いIE対応のためのJavaScript

 IE8以下では、未知の要素(つまりHTML5)のDOMを正しく構成しません。


<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8" />
  <title>HTML5 IE8以下対応サンプル 1</title>
  <style>
  body {
    width: 500px;
    margin: 30px auto;
  }
  
  header, section, footer {
    margin-bottom: 10px;
    padding: 10px;
    border: solid 1px #333;
  }
  </style>
</head>
<body>
<header>
  <h1>HTML5 IE8以下対応サンプル 1</h1>
</header>
<section>
  <h2>内容</h2>
  <p>特に何もしない状態。</p>
</section>
<footer>
  <p>&#169; 2011 hamashun</p>
</footer>
</body>
</html>

 たとえば上のソースコードをIE8で開くと、以下のように表示されます。

 この問題を解決するためには次のようなJavaScriptを使います。


<script>
 document.createElement('header');
 document.createElement('section');
 document.createElement('footer');
/* 必要な新要素の分だけ繰り返す */
</script>

 ('')の中に指定した要素を生成するだけの単純なJavaScriptです。このサンプルをIE8で確認すると以下のように表示されます。

 ただし、createElement()で要素を生成する方法では印刷時に崩れる可能性があるので、実務では読み込むだけで対応してくれるライブラリーを使うと手軽で安心です。


<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
html5shim - HTML5 IE enabling script - Google Project Hosting
http://code.google.com/p/html5shim/

 どちらの方法を使う場合でもIE8以下にだけ適用できればよいので、条件付きコメントを使用してもよいでしょう。


<!--[if lt IE 9]>
 <script>
  document.createElement('header');
  document.createElement('section');
  document.createElement('footer');
 </script>
<![endif]-->

<!--[if lt IE 9]>
 <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

※これらのスクリプトは、</head>より前に記述する必要があります。

2012年6月5日追記:html5shimの使用方法に変更があり、ファイルをダウンロードして使うことが記載されています。詳しくは IE対応でよく利用するhtml5shivの使用方法変更について|Blog|Skyward Designをご参照ください。

いくつかの要素にdisplay: block;を指定

 HTML5の要素に未対応のブラウザーでは、新しい要素はすべてdisplay: inline;の状態で表示されます。そのため、要素によってはdisplya: block;を指定する必要があります。


header, section, footer {
 display: block;
}

 このサンプルをIEで開くと以下のように表示されます。HTML5の要素がブラウザーに認識され、display: blockが適用されたことで、HTML5に対応しているブラウザーと同様、意図したとおりに表示されました。

 display: inline;の表示のままでよい要素に関しては、特に指定する必要はありません。

実務で使用するかどうかの判断

 ここまでHTML5の基本について解説してきましたが、現時点で実務に使用するべきか迷う方もいることと思います。確かにHTML5は策定中であり、今後仕様が変更される可能性もありますが、ブラウザーは日々実装を進めていますし、W3Cの策定の流れ上、2つ以上のブラウザーでの完全な実装を持って勧告へ向かうため、W3Cの勧告を待つのは慎重すぎるかもしれません。

 判断材料の1つとして、要素ごとの安定度合いをチェックする方法を紹介します。WHATWGのHTML5の仕様書にはそれぞれの要素のステータスが表示されています。

 たとえば、br要素を見ると、"Implemented and widely deployed"と書いてあり、仕様が実装済みであることが分かります。

 一方、hgroup要素を見てみると、"Being considered for removal"と書いてあり、この要素は仕様から削除される可能性があることが分かります(記事執筆時点)。

 MathMLを見ると、表示されるブラウザーのアイコンが少なかったり、表示が薄くなっていたりして、部分的な実装や未実装のブラウザーがあることが分かります(記事執筆時点)。

 これらを踏まえて、「HTML5を採用するか」ではなく、「HTML5の要素でどの安定度までを採用するか」と考えるのも、1つの基準となるでしょう。

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています