今のところすぐに HTML5 を使う理由もないので、実際に HTML5 でソースコードを書いてみるってことをしていなかったのですが、思い立って簡単に書いてみました。この Blog のトップページを HTML5 で再コーディングしたらどんな感じかなということで、今ある構成要素をほぼそのままに、HTML5 でサンプルを作ってみました。
見ていただければわかりますが、超適当です。スタイルもさすがに全くなしっていうのもなんですので、最低限のレイアウトだけ適当に当ててあります。
一応、IE でもスタイルが当たるように、「HTML5 enabling script」 を読み込んでいます。JavaScript が無効だと意味ないですが、まぁあまり細かいことは気にしない方向で。JSファイル 1つ読み込むだけなので簡単ですね。
あとは、現状である程度確定してきた仕様書をベースにコーディングしていますが、aside 要素の使い方とかちょっと悩んだり、section 要素の使いどころも微妙だったんでメインコンテンツでは使わなかったり、microdata 使おうと思ったんだけどちょっと見送ったりなどなど。ちなみに元から付けてる microformats はそのままに。
HTML 5 Outliner でアウトラインを確認すると下記のような感じ。nav や aside 要素で見出しを入れていないところが Untitled Section になっていますが、特に問題はないかなと。
- WWW Watch
- Untitled Section
- Untitled Section
- エントリーのタイトル1
- エントリーのタイトル2
- エントリーのタイトル3
- エントリーのタイトル4
- エントリーのタイトル5
- Untitled Section
- Recent Entry
- Archives
- Categories
- Tagcloud
- site search
- Advertisement
- Untitled Section
- recommended
- Playlist
- Photo
あと、サイト内検索の入力フォームに placeholder 属性とか使ってみました。Safari と Chrome でしか動作しないですが、地味に便利ですね。
また、CSS が有効だと表示されないですが、nav 要素を使ってスキップナビも設置してみたり。ブラウザがもっと賢くなれば、こういうのなしにページ内の各ナビゲーションやコンテンツを適切に見つけ出して誘導してくれるようになるのかもしれないですね。
今回作ってみたのは Blog のトップページですが、個別記事ページとかだとまた多少変わってくるんでしょうね。もう少し検証とかしつつ調べてみようと思います。
参考エントリー
HTML5 を学ぶための情報源まとめ





![[広告] EIZO 地デジ対応ターミナルモニター](http://direct.eizo.co.jp/docs/link/Netmile_080422.gif)
display:noneで消しているh2にキーワードを詰め込んだサイト説明文……説明文にh2っていうのはちょっと違和感がありますね、HTML5だとh*要素はそういうふうな使い方をするべきなのでしょうか。
…と、良く見たらhgroup!でもhgroupって「ドラゴンクエスト~悪霊の神々編~」みたいなのを「<hgroup><h1>ドラゴンクエスト</h1><h2>悪霊の神々編</h2></hgroup>」のようにするものだと思っていました。id属性のdescriptionのようにh1に対する説明文としての役割を果たす要素であれば、p要素を用いるべきなのではと直感的には思いましたが…。
リストのタイトル(というか内容の属性的なもの)をなんとなく定義リストやtitle属性でつけていたのが、nav要素とrole属性でバシっと決められるのは心地よいですね。音声ブラウザはここら辺をどのように対応するのか楽しみですが、もし無視されるようなら、結局定義リストやtitle属性を入れなきゃいけなくなることがあるかもしれませんが…。
frankly さんコメントありがとうございます。
サイト説明文を段落とするか見出しとするかは制作者の意図によるとは思いますのでサブタイトルととらえれば見出しでもいいとは思いますよ。今回はサイト名と説明をまとめてタイトルとした感じですね。(h2をdisplay:none;は余計だとは思いますが)
マークアップは今までより的確にできるようにはなりましたね。これとmicroformats、microdata、RDFaあたりを組み合わせればセマンティックなマークアップも可能だと思いますので楽しみではあります。
あ、ちなみにh2をdisplay:none;にしているのはサンプルを既存のデザインに近いレイアウトにしたかっただけで深い意味はないです。