【実務・中級編】ブロックレベル要素とインライン要素の包含関係の制約 – HTML実践ガイド

なぜその「pタグ」に「div」を入れるのか?HTMLの構造とブラウザの深層心理

フロントエンドの現場でコードレビューをしていると、時折見かけるのが「p要素の中にdiv要素やリスト要素が鎮座している」という光景です。

「いや、見た目はCSSでどうにでもなるし、ブラウザでもちゃんと表示されてるから問題ないでしょ?」

そう思うかもしれません。しかし、これは単なる好みの問題ではなく、HTMLという言語が持つ「文法」と、ブラウザという「優秀すぎる通訳」が裏で何をやっているかを理解していないことで起こる、少し危険な罠なのです。今日は、HTML5以降の仕様に立ち返り、なぜ`

`の中にブロック要素を入れてはいけないのか、そしてブラウザが裏でどんな「忖度」をしているのかを紐解いていきましょう。

1. 仕様が語る「包含関係」の正体

HTML5において、`

`要素は「フレージング・コンテンツ(Phrasing Content)」のみを子要素に持つことができます。

簡単に言えば、「文章の一部として扱えるもの(``, ``, ``, ``など)」だけが、`

`の中に居場所を与えられているのです。一方で、`

`や`

コメント

タイトルとURLをコピーしました