HTML5のタグ
HTML5のタグは、「新しく追加されたタグ」「廃止されたタグ」「定義が変わったタグ」「既存のタグ」の4種類に分けられますが、今回は「新しく追加されたタグ」の簡単な解説をしたいと思います。
HTML5における文書論理構造の捉え方・考え方が理解できるようになれば幸いです!
ちなみに、新しく追加されたタグ一覧はこちら↓
ではひとつずつ見ていきましょう!
文書論理構造に関わるタグ
以下はそのサイトの構造やRSS配信のときに関わってくる重要なタグです。
その論理的な役割などを理解しながら覚えるとよいでしょう。
<header>
ヘッダーに使います。今まで
1 2 3 |
<div id="header"> <h1>ヘッダーです。</h1> </div> |
とやっていたのが、
1 2 3 |
<header> <h1>HTML5のヘッダーです</h1> </header> |
こうなるわけですね。
ヘッダーになにを含めるのかは人によってまちまちです。
たとえばメインビジュアルメインビジュアルをヘッダーに含めるかどうか、メインメニューをヘッダーに含めるかどうかなど、意見は様々ですが……自分が信じる方でよいでしょう(笑)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<header> <h1>HTML5のヘッダーです</h1> <!-- ▽メインビジュアル --> <div class="mainvisual"> <img src="mainvisual.png"> </div> <!-- △メインビジュアル --> <!-- ▽メインメニュー --> <nav> <ul> <li>メニュー1</li> <li>メニュー2</li> <li>メニュー3</li> </ul> </nav> <!-- △メインメニュー --> </header> |
考えて、自分なりに意図が言えればそれでよしです。
<footer>
同じく、フッターですね。
1 2 3 |
<footer> <small>(c) Hajipioneer</small> </footer> |
copyrightや下部サイトマップなどに使用します。
「上部に戻る」ボタンをフッターにいれるかどうかは、迷いどころです(笑)
<nav>
メインメニューを司るタグです。
1 2 3 4 5 6 7 |
<nav> <ul> <li>メニュー1</li> <li>メニュー2</li> <li>メニュー3</li> </ul> </nav> |
そのサイトがどんなページやエリアをもっているのかをプログラムに教える重要なタグなので、漏れがないように気をつけましょう!
特にサイドバーにメインメニューがある場合に忘れやすいですね。
サイドメニューであっても、<nav>は必ずつけましょう。
<article>
記事の内容、コンテンツ本文が存在するエリアにつけるタグです。
1 2 3 |
<article> <p>これは記事です。</p> </article> |
RSS配信の際、このタグの内容から情報がとってこられたりするので、大変重要な役割を担っています!
基本的にひとつのページに「ひとつだけ」あるべきですが、コメントエリアを<article>を入れ子にしてマークアップする場合もあるみたいですね。
<aside>
補足情報をあらわすタグです。
1 2 3 4 5 6 7 |
<aside> <h2>人気記事一覧</h2> <ul> <li>ゆる〜く解説!HTML5から新しく追加されたタグ一覧</li> <li>2014年の正式勧告前に!HTML5の基礎ルールをおさらい</li> </ul> </aside> |
本文とは直接関係のない裏話や註釈などに使われることを想定しているそうですが、それだとあまり使わなそう……。
なので、個人的にはサイドバーによく使ってます。
サイドバーを「メインコンテンツに関する補足情報」とみなしているわけですね。
「この記事と関連する記事」のようなエリアにもいいかも!
<section>
ざっくりと「ひとまとまり」であることを示します。
1 2 3 4 5 6 7 8 |
<section> <h3>今日の天気</h3> <p>今日は天気が晴ですね。</p> </section> <section> <h3>今日の運勢</h3> <p>今日の運勢は最高です。</p> </section> |
HTML5の論理構造は「セクショニングコンテンツ」という考え方をベースに構築されているので、<section>で囲まれたエリアが本当にひとまとまりにしてよいものか、常に考える必要があります。
たとえば、HTML5では<section>で囲まれて階層化されていれば、なんと<h1>タグを複数使いまわすことも推奨されているのです!
1 2 3 4 5 6 7 8 |
<section> <h1>今日の天気</h1> <p>今日の天気について書きます。</p> <section> <h1>降水量について</h1> <p>今日の降水量は以下の通りです。</p> </section> </section> |
(これについてはまたいつか書きます)
また、「ひとまとまり」とはいっても、「意味的なひとまとまり」なので、レイアウトのための「配置的なひとまとまり」をつくる場合には今まで通り<div>を使って下さい。
コンテンツ自身の分類に関わるタグ
<time>
その名の通り日時を示すタグです。
1 2 3 4 |
<header> <h1>この記事のタイトルです。</h1> <time>2014.06.01</time> </header> |
文章中にでる日付や日時にそのまま使ってもいいですし、とある記事の公開日時を示すために使ってもいい、意外と汎用性の高いタグですね( ̄▽ ̄)
<figure>
図表であることを示します。
1 2 3 4 |
<figure> <img src="images/sky-june.png" alt="6月の空"> <figcaption>6月の空模様です!キレイですね</figcaption> </figure> |
イラスト・図・写真など、本文中から参照される図表の<img>タグを囲みます。
基本的に<figcaption>と共に使われていますね。
<figcaption>
<figure>タグで囲んだ図表にキャプションをつけるときに使います。
上記の例の通り<figure>タグの中にマークアップする感じですね。
<summary>
後述する<details>の要約を示します。
<details>
その名の通り、任意の情報の「詳細」を示します。
<summary>によってその詳細を要約した、いわゆる見出しを囲みます。
1 2 3 4 5 6 7 8 |
<details> <summary>コンテンツ自身の分類に関わるタグ</summary> <dl> <dt><b><time>:</b></dt><dd>日時を示す</dd> <dt><b><figure>:</b></dt><dd>図表を示す</dd> <dt><b><details>:</b></dt><dd>詳細を示す</dd> </dl> </details> |
↓
コンテンツ自身の分類に関わるタグ
- <time>:
- 日時を示す
- <figure>:
- 図表を示す
- <details>:
- 詳細を示す
コンテンツを生み出す系のタグ
<canvas>
図形やアニメーションを描画できる画期的なタグです。
HTML5といったらこれ!
<video>
<img>タグを使うように動画を埋込みできます。
1 |
<video src="sample.mp4" autoplay></video> |
<video src="foobar">のように指定するか、後述の<source>タグを使ってファイルを指定する感じですね(´▽`)
<audio>
<video>タグと同じ要領で、音声ファイルを埋め込めます!
1 |
<audio src="sample.mp3" controls> |
便利になりましたね( ̄▽ ̄)
<source>
<video>と<audio>のソースや種類を指定します。
1 2 3 |
<video controls> <source src="sample.mp4" type="video/mp4"> </video> |
<track>
キャプチャータイトルや字幕がつけられる便利なタグです。
<video>タグや<audio>タグの子要素として使われます。
1 2 3 4 |
<video controls> <source src="sample.mp4" type="video/mp4"> <track src="sample.vtt" kind="subtitles" srclang="ja" label="日本語字幕"> </video> |
<embed>
FLASHやMIDIファイルなどを埋込みするときに使います。
1 |
<embed src="sample.swf" width="500" height="500"> |
<menu>
<nav>タグとごっちゃになりそうですが、<nav>はサイトのナビゲーション、<menu>は「操作メニュー」を作成するタグです。
サイトよりもWebアプリなどで用いられそうですね。
1 2 3 4 5 |
<menu label="操作メニュー"> <button type="button" onclick="save()">保存</button> <button type="button" onclick="copy()">コピー</button> <button type="button" onclick="paste()">貼り付け</button> </menu> |
↓
<command>
<menu>タグで操作メニューを作成する際、コマンドを指定するためのタグです。
1 2 3 4 5 |
<menu label="操作メニュー"> <command type="checkbox" label="チェックボックス1" checked> <command type="checkbox" label="チェックボックス2"> <command type="radio" label="ラジオボタン"> </menu> |
数値・フォーム系のタグ
<datalist>
フォーム入力の入力候補を定義します。
まず、<input>要素のautocomplete属性の値をonにします。
次に<datalist>のid属性の値と、<input>タグのlist属性の値を一致させます。
<option>のvalue属性に値をいれて、入力候補の定義が完了です!
1 2 3 4 5 6 7 8 |
<input type="search" autocomplete="on" list="tags"> <datalist id="tags"> <option value="article"></option> <option value="aside"></option> <option value="section"></option> <option value="header"></option> <option value="footer"></option> </datalist> |
↓
実際、超便利です。
<keygen>
フォームを送信する際にキーを発行するタグです。
key generatorの略ですね。
公開鍵と秘密鍵のペアを生成するためのコントローラーを生成してくれます。
1 |
<keygen name="sample" autofocus> |
↓
<progress>
タスクの進行状況を表示するタグです。
HTML5ではサイトよりもアプリ用のデフォルトタグが増えた印象が強いですね。
1 |
<progress max="100" value="70" style="margin-left:30px"></progress> |
<output>
<input type="range">などでユーザーが入力した結果を表示するためのタグです。
1 2 3 4 |
<form method="get" oninput="result.value=Number(a.value)+Number(b.value);"> <input type="number" name="a" value="0"> + <input type="number" name="b" value="0"> <p>計算結果:<output name="result">0</output></p> </form> |
↓
まだブラウザ対応はそんなに追いついていないようです…。
<meter>
割合としての測定値を示します。
たとえばりんごを20個中8個食べたときは、
1 |
<meter max="20" value="8">20個中8個</meter> |
↓
となります。
補助系のタグ
<ruby>
ルビをふるためのタグです。見たことある人・使ったことある人もいると思いますが、HTML5でやっと標準仕様となりました。
使い方は、ルビのテキストを<rt>で囲み、<ruby>タグに対応していないブラウザのために<rp>でルビを囲む『()』などの記号を指定します。
1 2 3 4 |
<ruby> 日<rp>(</rp><rt>に</rt><rp>)</rp> 本<rp>(</rp><rt>ほん</rt><rp>)</rp> </ruby> |
日
本
<rt>
上記の<ruby>タグにおいてルビのテキストを囲むためのタグですね。
Ruby Textの略です。
<rp>
同じく、Ruby Parenthesesの略ですね。
<ruby>タグに対応していないブラウザでは上記の例は、
日(に)本(ほん)
のようになります。
<wbr>
単語の区切り(改行)を示すタグです。日本語ではあまり気にしないでも大丈夫です。
英字が続くときなど必要なときに使いましょう。
<mark>
文章をハイライトします。
1 |
<p>あなたが検索したのは<mark>HTML5</mark>というワードですね。</p> |
↓
あなたが検索したのはHTML5というワードですね。
<bdi>
書字方向の相違から起こる問題を解決するタグです。
具体的に言うと、アラビア語などは右から左に読むので、ピリオドやコロンなどの記号が左側に配置されてしまい、それがリスト項目だったときにそこだけおかしな表示になってしまいます。
そんなときにその文字だけを<bdi>で囲めば、その部分だけを独立してくれるので、レイアウトが崩れなくてすむのです。
普段はあまり使わないタグかもしれませんね。
以上がHTML5から新しく追加されたタグになります。
次の記事は逆に、HTML5で廃止されたタグについて書くかも!
HTML5を学ぶのにオススメな本
HTML5はよりセマンティックにコードを書くためのセクショニングコンテンツという考え方が採用されています。
それを簡潔に、かつ明快に解説している本がこちら!
HTML5のコードを自信をもって書けるようになります。
非エンジニア・デザイナーの人でも分かりやすい本なので、HTMLの基礎を学びたい!という初心者の人もぜひ〜