みなさんこんにちは。teratail開発チーム デザイナーの木村和寛です。
Webサイトの制作において欠かせない言語の1つがHTML
そんな一般的なHTMLですが、
- [参考]
teratailでの質問件数 (2016/ 8時点) - HTML:2735件
- HTML5:1200件
HTMLも他の言語と同様に標準仕様に沿った
HTMLを正しく書くことの重要性
今回、
以下のHTMLは、
<body>
<h1>サイト見出し</h1>
<div>
<div>
<h2>ページ見出し</h2>
</div>
<div>
<h2>コンテンツ見出し</h2>
<div>本文</div>
</div>
<div>
<h2>コンテンツ見出し</h2>
<div>本文</div>
</div>
</div>
</body>
このHTMLを見て
これは決して過剰な例ではありません。少ない工数で素早く開発を行わなくてはいけない状況下では、
ブラウザ上でCSSが反映されていて、
「適した箇所に適した意味のタグを設定する」
- いちいち理解に時間がかかり、
開発の工数が膨らむ - 誤った構造の理解をしてしまい、
違う階層の似た箇所に新たな開発をしてしまう
上記のようなことに合わせて、
HTMLは本来
HTMLを正しく書くとは?
ではどのように書くことで正しく理解しやすいHTMLを実現できるのでしょうか。今回は、
<body>
<h1>サイト見出し</h1>
<div>
<div>
<h2>ページ見出し</h2>
</div>
<div>
<h2>コンテンツ見出し</h2>
<div>本文</div>
</div>
<div>
<h2>コンテンツ見出し</h2>
<div>本文</div>
</div>
</div>
</body>
こちらのアンチパターンをHTML5の要素を使いながら意味付けを行っていくと、
<body>
<h1>サイト見出し</h1>
<article>
<header>
<h2>ページ見出し</h2>
</header>
<section>
<h3>コンテンツ見出し</h3>
<p>本文</p>
</section>
<section>
<h3>コンテンツ見出し</h3>
<p>本文</p>
</section>
</article>
</body>
このHTMLの
- article要素
- ドキュメント、
ページ、 アプリケーション、 またはサイト内で自己完結した構成物を表します。ここでいう構成物とは、 雑誌、 新聞、 技術的または学術記事、 エッセイ、 レポート、 ブログやソーシャルメディアへのポストなど、 全体の構成を崩さずに独立での利用が可能なものです。 - header要素
- 最も近い祖先のセクショニング・
コンテント、 または、 セクショニング・ ルートの導入のコンテンツを表します。通常は、 イントロダクションやナビゲーションを補助するグループが含まれています。 - section要素
- 一般的なドキュメントやアプリケーションのセクションを表します。セクションは、
この文脈において、 コンテンツのテーマをグループ化するものです。通常は、 section要素の子として見出し (h1-h6要素) を入れることで、 section要素それぞれのテーマが識別されます。
- [参考]
HTML 5. 2: 4. 3 Sections - http://
w3c. github. io/ html/ sections. html - http://
これらHTML5の要素を文書の意味付けに正しく使うことで、
HTMLを正しく書く上ではじめに意識したいこと
これまで紹介したように、
- HTMLはどのバージョンで書いているのか
- どの要素がどんなルールのもとに使えるのか
- HTMLのソースコードだけを見て、
文書構造とその意味を理解できるか
teratailにも以下のようなHTML5の要素がどんなルールのもとに使えるのかという質問があります。
[参考] 最新仕様におけるHTML5のアウトライン判定とh1要素の扱いについて - https://
teratail. com/ questions/ 13297
最後に
いかがでしたか。今回はHTMLを書くにあたって、
HTMLの標準仕様もどんどん変わっていきますが、
- teratail
【テラテイル】 |思考するエンジニアのためのQAプラットフォーム - https://
teratail. com/