web-dev-qa-db-ja.com

<img>タグがHTMLで閉じられないのはなぜですか?

好奇心のために、なぜ<img>タグが[〜#〜] html [〜#で閉じられない〜]

<img src="smiley.gif" alt="Smiley face" height="42" width="42">

また、<img>タグが[〜#〜] xhtml [〜#〜]で明示的に閉じられていることにも気付きました。 ...

<img src="smiley.gif" alt="Smiley face" height="42" width="42"/>

W3Schools:画像タグ

37
ѺȐeallү

歴史的に、HTMLは特定の条件下でタグを省略できるSGMLに基づいています。

<img>要素には子ノードを含めることはできません。これはEMPTYとして定義され、終了タグは禁止されています(目的を果たさないため)。

XHTMLはXMLで表現されたHTMLであり、XMLはオプションまたは禁止タグをサポートしていません(ただし、開始タグと終了タグのペアの代わりに自己終了タグを使用できます)。そこで、明示的に閉じる必要があります。

HTML 5は、SGMLベースのHTMLのバージョンと下位互換性があります。

36
Quentin

<img>タグは、void要素HTML5仕様 を参照)として知られているものを表します。任意のコンテンツ(たとえば、<a>または<div>)。したがって、HTMLで閉じる必要がある構文上の理由はありません。

ただし、XHTMLはXMLに基づいており、すべてのタグを閉じる必要があります。

17
kmoe

これはvoid要素と呼ばれるもので、要素にコンテンツを含めることはできません(ただし、属性を含めることはできます)。HTML5仕様では、void要素について次のように記述しています。

要素がvoid要素の1つである場合、または要素が外部要素の場合、mayは単一の「/」(U + 002F)文字です。 この文字はvoid要素には影響しません

したがって、単一の "/"(U + 002F)文字を使用する本当の理由はありませんが、含まれていても何も壊れません。

4
Josh Davenport

<img>タグは基本的にVoid要素です。

あなたの理解のために:

画像にはコンテンツがありません。画像タグは、src属性を介してリソースがロードされる場所からのパスを提供します。したがって、終了要素は必要ありません。

一方、<img src="smiley.gif" alt="Smiley face" height="42" width="42"/>、このコードはXHTMLバージョン用です。

2
Azeez