HTMLの書き方|タグの使い分けと基本ルール

HTMLとは|このカテゴリで分かること

HTMLの書き方は、タグを覚えることよりも「この内容にはどのタグが意味として正しいか」を選べるようになることが出発点です。このカテゴリでは、セマンティックHTML、見出し構造、フォーム部品、画像、表、ダイアログといった、Webサイト制作で毎回使う要素を取り上げます。HTMLタグの一覧を暗記したい人というより、コーディングを始めたばかりで「div だらけになってしまう」「フォームの属性が多すぎて混乱する」と感じている人、実務で既存コードを直す機会が増えたコーダーを想定しています。

HTMLは、文書の構造と意味を表す言語です。見た目はCSSの担当ですが、見出しやリスト、フォームの部品を正しく選んでおくと、検索エンジンやスクリーンリーダーなど、人間の目以外でページを読む仕組みにも内容が伝わります。仕様は WHATWG が Living Standard として継続的に更新しているため、細かな要素の扱いは時間とともに変わりうる点も頭に入れておいてください。

読む順番(おすすめの順路)

初めての人は、まずページ全体の骨組み、次に部品、最後に応用要素という順に読むと、つながりが理解しやすくなります。

  1. セマンティックHTMLとは|header・main・article の使い分け … header・main・article など、ページの骨組みの考え方を最初に押さえます。
  2. HTMLの見出し構造(h1〜h6)|正しい階層とやってはいけない書き方 … 骨組みの中で見出しをどう階層化するか。SEOとアクセシビリティの両方に効きます。
  3. HTMLフォームの基本|label・name・required・autocomplete の書き方 … 実務で最も事故が起きやすいフォームの基本を、label と name から確認します。
  4. input type の種類一覧|email・tel・number・date の使い分け … 入力欄の種類を使い分けると、スマホのキーボードも変わります。
  5. HTMLのtableの書き方|caption・thead・th scope とアクセシビリティ … 表の構造とアクセシビリティ。デザイン目的で使わない理由も分かります。
  6. picture と srcset の使い方|sizes・レスポンシブ画像の書き方 … 画像をデバイスに合わせて出し分ける方法です。
  7. meta viewport とは|width=device-width と user-scalable の注意点 … レスポンシブ対応の前提になる head の設定です。
  8. target="_blank" と rel の使い方|noopener・noreferrer・nofollow … 別タブで開くリンクの安全面の注意点です。
  9. details と summary の使い方|JS不要のアコーディオンとFAQ … JavaScriptなしで開閉UIを作る方法です。
  10. HTMLのdialog要素の使い方|showModal・returnValue・::backdrop … モーダルを標準要素で作る応用編です。仕上げに読みます。

押さえておきたいポイント(リサーチ)

公式ドキュメントで確認できる、このカテゴリの前提を整理します。最新の対応状況は各公式ページで確認してください。

  • HTMLの仕様は WHATWG の HTML Living Standard が継続的に更新している「生きた標準」です。
  • レスポンシブ画像には2つの課題があります。画面サイズや解像度に応じて適切な画像を出す「解像度切り替え」と、画面ごとにトリミングの違う画像を出す「アートディレクション」です(MDN)。
  • 前者は img 要素の srcset と sizes、後者は picture 要素の source で扱います。picture の中には、フォールバックとして img 要素が必須です(MDN)。
  • 画像のダウンロードは CSS や JavaScript が読み込まれる前に始まるため、画像の出し分けは HTML 側の属性で行うのが基本とされています(MDN)。
  • dialog 要素は、showModal() でモーダルとして開くと背後のコンテンツが操作できなくなり、背景は ::backdrop 疑似要素でスタイルできます。form の method に dialog を指定すると、送信でダイアログを閉じられ、押したボタンの値が returnValue に入ります(MDN)。

よくある疑問

Q. HTMLの書き方は何から勉強すればよいですか。
A. まず セマンティックHTMLとは|header・main・article の使い分け で骨組みの考え方を押さえ、HTMLの見出し構造(h1〜h6)|正しい階層とやってはいけない書き方 で見出しの階層を理解すると、残りの要素も迷いにくくなります。

Q. div と section や article はどう違いますか。
A. div は意味を持たない汎用の箱、section や article は内容のまとまりに意味を与える要素です。判断の基準は セマンティックHTMLとは|header・main・article の使い分け で整理しています。

Q. フォームで最低限つけるべき属性は何ですか。
A. label と入力欄の対応、name、必要に応じて required や autocomplete です。詳しくは HTMLフォームの基本|label・name・required・autocomplete の書き方 を参照してください。

Q. 別タブで開くリンクに注意が必要なのはなぜですか。
A. リンク先ページが window.opener 経由で元ページを操作できる問題が知られているためです。MDN によると、現在のブラウザでは target=”_blank” で暗黙に noopener と同様の動作になりますが、Referer の扱いなど rel の指定が関わる点は残ります。対応状況は公式で確認し、具体的な書き方は target="_blank" と rel の使い方|noopener・noreferrer・nofollow にまとめています。

編集部の見解

HTMLは「簡単だから後回し」にされがちですが、後から直すのが最も高くつく部分だと考えます。見出しの階層やフォームの label は、見た目では問題が分からないまま公開されやすく、気づくのは検索順位やユーザーからの指摘になってからです。一方で、すべてのタグを完璧に使い分ける必要はないとも思います。まずは見出し、リスト、フォーム、画像の4つを丁寧に書き、迷ったら仕様や MDN で意味を確認する習慣をつけるのが、遠回りに見えて近道ではないでしょうか。また、dialog や details のように標準で使える要素が増えているため、JavaScriptで自作する前に標準要素で足りないかを確認することをおすすめします。

出典(一次情報)

HTMLフォームの基本|label・name・required・autocomplete の書き方 HTML

HTMLフォームの基本|label・name・required・autocomplete の書き方

HTMLフォームの label と for/id の関連付け、name、required、autocomplete、fieldset と legend の使い方を解説。ブラウザ標準の検証と FormData の値を実際に確認した結果もあわせて紹介します。
HTMLのdialog要素の使い方|showModal・returnValue・::backdrop HTML

HTMLのdialog要素の使い方|showModal・returnValue・::backdrop

HTMLの dialog 要素でモーダルを作る方法を解説。showModal() と show() の違い、form method=dialog で値を受け取る方法、::backdrop、Escキーと closedby の挙動を、実行結果つきで整理します。
details と summary の使い方|JS不要のアコーディオンとFAQ HTML

details と summary の使い方|JS不要のアコーディオンとFAQ

HTMLの details と summary を使えば、JavaScriptなしで開閉できるアコーディオンが作れます。open 属性、name 属性での排他制御、マーカーのカスタマイズ、アクセシビリティの注意点を実行結果つきで解説。
HTMLのtableの書き方|caption・thead・th scope とアクセシビリティ HTML

HTMLのtableの書き方|caption・thead・th scope とアクセシビリティ

HTMLの table タグの正しい書き方を解説。caption・thead・tbody・tfoot・th scope の使い方、colspan・rowspan の注意点、レイアウトに使わない理由を、描画結果とあわせて整理します。
picture と srcset の使い方|sizes・レスポンシブ画像の書き方 HTML

picture と srcset の使い方|sizes・レスポンシブ画像の書き方

img の srcset と sizes、picture と source の違いと使い分けを解説。w記述子とx記述子、アートディレクション、width・height 指定まで、実際に選ばれた画像を確認した結果つきで整理します。
target="_blank" と rel の使い方|noopener・noreferrer・nofollow HTML

target=”_blank” と rel の使い方|noopener・noreferrer・nofollow

aタグの target=_blank と rel 属性(noopener・noreferrer・nofollow・sponsored・ugc)の意味と使い分けを解説。noopener が暗黙で効く現在の挙動、SEO向けの値、実際に relList を確認した結果を紹介します。
meta viewport とは|width=device-width と user-scalable の注意点 HTML

meta viewport とは|width=device-width と user-scalable の注意点

meta viewport の書き方と各値の意味を解説。width=device-width, initial-scale=1 の基本形、user-scalable=no を避ける理由、interactive-widget や viewport-fit の使いどころをまとめます。
input type の種類一覧|email・tel・number・date の使い分け HTML

input type の種類一覧|email・tel・number・date の使い分け

HTMLの input type の種類を一覧で解説。email・tel・url・number・date・range・color・file などの使い分け、スマホのキーボード、バリデーションの動作と、number を使うべきでないケースを整理します。
HTMLの見出し構造(h1〜h6)|正しい階層とやってはいけない書き方 HTML

HTMLの見出し構造(h1〜h6)|正しい階層とやってはいけない書き方

HTMLの見出しタグ h1〜h6 の正しい使い方を解説。h1 の数、階層を飛ばさない理由、見た目の大きさとの切り分け、階層チェックのスクリプトまで、実際に動かして確認した結果を示します。
セマンティックHTMLとは|header・main・article の使い分け HTML

セマンティックHTMLとは|header・main・article の使い分け

セマンティックHTMLは、div の羅列ではなく意味を持つ要素で文書を組み立てる書き方です。header・nav・main・article・section・aside・footer の使い分けと、よくある間違いを実行結果つきで解説します。