EC studio EC studio デザインブログ

この数カ月でHTML5のサイトが国内にも増えてきました。先日10周年を迎えた EC studio のサイトもHTML5で制作しています。マークアップの面でのHTML5の導入となりましたが、難しいと思う以上に勉強になることが多くありました。(今も改善を続けています。)
http://www.ecstudio.jp/

個人サイト以外でHTML5を導入するのをためらっている人が多いと思うので、今からでも使っていくためのコツやノウハウをまとめてみました。

新要素をJavaScriptで生成する

HTML5の新要素はIEでは未知の要素です。そのため記述していてもDOMツリーが構成されなかったり、CSSが適用されないという問題が生じます。
そこでdocument.createElement(要素名);により、ブラウザ(ユーザーエージェント)にとって未知な存在の要素を生成し、認識させることができます。

JavaScript:
  1. <script>
  2. document.createElement("section");
  3. </script>

一番簡単な書き方をすればこれだとは思いますが、配列とかを使って上手いことできるとおもいます。それでもなかなかひとつひとつの要素を書いていくのが大変だと思うので、海の向こうの偉い人のソースを拝借することをおすすめします。

HTML5 enabling script

JSファイルをダウンロードして使っても良いですが、googlecodeでホストされているものをサンプルのようにそのまま使うのが良いとおもいます。パフォーマンス(表示速度)的にも良いです。

なおその場合には、HTML5に対応予定のIE9を除いたコンディショナルコメントにするのが良いでしょう。

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

このあたりについては、ものすごく素晴らしいまとめをされているW3Gさんの記事が参考になります。こちらの「HTML5の新要素を使うには」のセクションをご覧ください。
HTML5についてのおさらい

新要素のdisplayプロパティをスタリングする

IEに限らず、一部のブラウザを除いて新要素に対してdisplayの値がセットされていません。(厳密にはinlineとしてセットされている?)
これはHTML5からブロック、インラインという概念が変わったことが理由なのか、単純に先行実装のために定義されていないだけなのかわからないですが、いずれにせよスタイリングする上で、いくつかの要素にはあらかじめdisplayプロパティをセットしておく必要があります。

CSS:
  1. article, aside, dialog, figure, footer,
  2. header,hgroup, nav, section { display: block; }

これは主な要素としての例ですので、必要に応じてセットすれば良いです。
※もしかしたら先に紹介したHTML5要素を生成するライブラリで、これらの定義されているかもしれません。(あまりここは検証していないので後日検証予定)

新要素を使わない

ネタに聞こえるかもしれませんが、これは一番のコツとも言えるかもしれません。
つまりDOCTYPEをHTML5としての宣言にするだけです。

HTML:
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <meta charset="utf-8">

あわせてcharsetの記述も簡単にしてしまいましょう。
この程度であれば、IEで新要素の問題も起きませんし、不都合も特にありません。

ただ実際にはHTML5になって廃止された要素や属性もあるので、本当は万事OKというわけではありません。

でもそれでもちょっとずつValidatorサービスなどを利用しながら学んでいけば良いことかとおもいます。はじめてHTMLやXHTMLを学び始めたころを思い出してください。
HTML5 Validator(W3C)

divやspanを使う

「HTML5になってdivやspanを使うと負けかなって思ってる」人は負けです。

とか言い過ぎかもしれないんですが、HTML5でもdivとspanは必要です。
まして前述のように新要素を使うのをためらう場合は、divとspanで代用するのが良いでしょう。

HTML:

  1. <div class="article">
  2.  <div class="header">
  3.  <h1>記事のタイトル</h1>
  4.  <div class="entry-summary">
  5.   <p>記事の概要</p>
  6.  </div>
  7.  <div class="footer">
  8.   <p>投稿日:<span class="time">2010/07/30</span></p>
  9.  </div>
  10. </div>

ここの例でひとつ注目してもらうとすれば、div class="entry-summary"です。
これはHTML5でいうところのセクションではないので、section要素ではなくdiv要素であっても問題がない箇所です。
ただCSSのためなどに必要である要素であっても問題はありません。もちろん乱用はよくありません。それはHTML5の問題ではありません。

またこの書き方についてはもう一つ大きなメリットがあります。
冒頭で、IEでHTML5を使うためにはJavaScriptで要素を足せばいいということを書きましたが、もしJavaScriptがオフの環境であればそれが無効になります。
その点も考慮すると、上記のような既存の要素でHTML5的な書き方をするのが、実際には良いといえるかもしれません。
このJavaScriptオフの環境をどこまで考慮するかによって、書き方を検討してみてください。

要素セレクタを使わない

HTMLの話をここまでしてきたのですが、CSSの書き方にもコツがあります。
それは新要素を対象とした要素セレクタを使わないことです。

まずHTML側で新要素に対してclassを追加します。

HTML:
  1. <article class="entry">
  2.  <header class="entry-header">
  3.  <h1 class="entry-title">記事のタイトル</h1>
  4.  </header>
  5. </article>

これに対するスタイルは下記です。
前者はNG、後者はOKの例です。

CSS:
  1. article { /* 好ましくない例 */
  2.  margin: 0 auto;
  3.  width: 760px;
  4. }
  5.  
  6. .entry { /* おすすめしたい例 */
  7.  margin: 0 auto;
  8.  width: 760px;
  9. }

このようにスタイリングする理由は、HTML5の仕様変更により要素が変わってしまう可能性があるため、その場合のメンテナンスの負担を減らすためです。
例えばarticleという要素がなくなり、sectionに代わった場合などにはHTML側だけの修正で済みます。
この理由以外にも(CSS全体の書き方にもよりますが)パフォーマンスの面でも好ましいといえます。
※微々たるものですが。セレクタに関するパフォーマンスの話は下記サイトもご覧ください。
CSSセレクタのパフォーマンスへの影響

まとめ

この記事を参考に、HTML5やってみよう!と思える人が増えると幸いです。
invalidを恐れず、IEを恐れず、クライアント(顧客)を恐れずに挑戦しましょう。

HTML5に関する色々な情報

HTML5 における HTML4 からの変更点
http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff/

HTML5.jp
http://www.html5.jp/

HTML5についてのおさらい
http://w3g.jp/blog/studies/html5report

HTML5 Validator(W3C)
http://validator.w3.org/

HTML 5 Outliner
http://gsnedders.html5.org/outliner/

HTML5 enabling script
http://remysharp.com/2009/01/07/html5-enabling-script/

HTML5 のリセット・スタイルシート(HTML5 Doctor翻訳)
http://www.html5.jp/html5doctor/html-5-reset-stylesheet.html

今からハジメるHTML5マークアップ
http://www.slideshare.net/swapskills/futomi

HTML5, きちんと。
http://www.slideshare.net/myakura/html5-2480964

How to use HTML5 in your client work right now
http://html5doctor.com/how-to-use-html5-in-your-client-work-right-now/

You can still use div
http://html5doctor.com/you-can-still-use-div/


関連した記事:

■「iPhoneとツイッターで会社は儲かる」

ツイッター全社導入によるメリット・デメリット、
導入して起きた効果、社内への落とし込み方、
iPhone とツイッター、iPhone 活用方法、
さらには、iPhone×ツイッター×Google Apps™によって起こる
クラウド上のコミュニケーション革命について詳細に解説します。
最終章にはGoogle 代表取締役社長 辻野氏との対談を収録。

「iPhoneとツイッターで会社は儲かる」

ブックマークプラス by SEO対策

この記事へのコメント (0)

コメントはまだありません。

コメントを投稿

取材に関するお問い合わせ

090-1489-4909(担当:大崎)

投稿者
カテゴリー
人気のエントリー
最近のエントリー
アーカイブ
代理店制度のご案内
RSSリーダーに登録する
  • はてなRSSに追加
  • livedoor Readerに追加
  • My Yahoo!に追加
  • Googleに追加
  • goo RSSリーダーに追加
  • Bloglinesに追加
  • Technoratiに追加
  • PAIPOREADERに追加
  • newsgatorに追加
  • feedpathに追加

Powered by SEO対策
RSSプラス

RSSの購読者数を増やす
RSSプラスを設置しませんか?

BLOG オフィシャルブログ

社長ブログ
EC studio社長ブログ

ブログを読む

技術ブログ
技術部のブログ

ブログを読む

デザインブログ
デザイン部のブログ

ブログを読む

RECRUIT 採用情報

EC studio 採用情報の詳細はこちら

Copyright© EC studio, All Rights Reserved.