<img>タグを適切に閉じる方法は?


122
<img src='stackoverflow.png'>
<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />

どれが正しいですか?


6
問題は、「<img>タグを適切に閉じる方法?」です。これは本当の質問であり、答えは役に立ちます。この質問はクローズされるべきではありませんでした。

3
現在、問題はありません。あいまい、曖昧、不完全、過度に広範、修辞的ではありません。以下にも素晴らしい答えがあります。
David J.

次の答えのうちどれが正しいのかわかりませんが、興味深いことに、Firefoxのコードインスペクターは、タグの末尾に</ img>を追加しません。そしてIEはそうではありません。これは私の宇宙で重要です。
Chiwda

PS Dreamweaverは/> XHTMLタグを挿入します。
Chiwda

回答:


50
<img src='stackoverflow.png' />

正常に動作し、タグを適切に閉じます。alt視覚障害者のための属性を追加するのが最善です。


4
<img />[X] HTML / XMLで有効なのは正しいですが、XHTMLの使用は今日では非常にまれであり、サーバーがページを提供してtext/htmlいる場合、心配する必要があるのは有効なHTMLを記述することだけです。HTMLアプリをXHTMLに移行しなければならない確率はほぼゼロです。
FABRICIOマット

1
上記の答えは、4.01 Transitional以降をターゲットにしている場合、W3CのHTMLチェッカーで検証できません。W3Cマークアップ検証サービスも参照してください。上記の答えにはHTML5またはXHTMLが必要だと思います。検証の失敗を回避するには、<img src='stackoverflow.png'>(それが重要な場合)を使用する必要があります。
jww 2016年

1
@FabrícioMatté実際の使用では、xhtmlを大幅に過小評価しています。会社が大規模であるほど、xhtmlよりもxhtml、またはxhtmlのようにフォーマットされたhtml5(解析が簡単/高速)で動作する可能性が高くなります。あるいは、microdataやixbrlなどの拡張マークアップで動作します。
Robert McKee

「正常に機能する」と「指定された」の間には大きな違いがあり、そのタグで終了スラッシュの使用を要求するHTML仕様を見つけることはできません。他の人が述べたように、XHTML / XMLを使用するように最初に記述されたWebサイトを壊さないようにすることは許可されていますが、その使用法が必要であることを示す文言や例はどこにも見つかりません。実際、意味がないことを示す文言が見つかり、ブラウザはそれを無視するように指示されます!
ロブ

ロブ-6年前に問題がありました。これはそれを修正しました。ブラウザはもっと良いと
Ed Heal

163

これは有効なHTML5であり、閉じなくても問題ありません。いわゆるvoid要素です。

<img src='stackoverflow.png'>

以下は有効なXHTMLタグです。彼らは閉じられなければならない。後者はHTML 5でも問題ありません。

<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />

5
これは有効なHTML5だけでなく、HTML4でも有効です。あなたが言ったように、HTMLは自己終了の「void」要素を必要としません。首尾一貫した答えのための+1。
ファブリシオマッテ2013

2
HTML5またはXHTMLは、4.01 Transitional以降を対象とする場合、W3CのHTMLチェッカーで検証できません。W3Cマークアップ検証サービスも参照してください。あなたはそれを使用する必要があります<img src='stackoverflow.png'>(それがあなたにとって重要な場合)。
jww 2016年

長年のコメント... <img src="about:logo" alt="about:logo">Firefox 76のabout:logoページでタグを見て混乱しました!がdocument.body.innerHTML示していますが<img src=\"about:logo\" alt=\"about:logo\">...非常に良い答え...
S.Goswami

4

実際、最初の1つだけがHTML5 で有効です

<img src='stackoverflow.png'>  

最後の2つだけがXHTMLで有効です

<img src='stackoverflow.png'></img>  
<img src='stackoverflow.png' />

(厳密には必須ではありませんが、alt属性_usually_も含める必要があります)。

そうは言っても、ブラウザーはHTMLを意図したとおりに書き換えたり解釈したりするため、HTML5ページは意図したとおりに表示されます。それはあり、それから、例えば、タグを回すわけ
<div /><div></div>。あるいは、の最後のスラッシュを無視するだけかもしれません<img ... />
レガシー検証については、2016:XHTML 5.0としてHTML5を提供するを参照してください。
参照:2011年のディスカッションと追加リンクはここにありますが、時間の経過とともに一部が変更された可能性があります

これは、ブラウザがエラーの修正に非常に努力しているためです。また、自己終了タグとvoidタグについて多くの混乱があるためです。最後に、仕様が変更されたか、常に明確ではなかったため、ブラウザは下位互換性を維持しようとします。

したがって、おそらく3つのオプションのいずれかを使用
して回避できますが、最初のオプションのみがHTML5標準に準拠しており、HTML5バリデーターを渡すことが保証されています。

適切な戦略は次のとおりです。

  • 終了スラッシュなしで新しいコードを記述します。
  • コードをリファクタリングするときは、それらに出くわしたときに、近くのイメージタグを更新します。
  • 特に必要がない限り、触れないレガシーファイルのタグについて過度に心配しないでください。

HTML5で閉じてはいけないタグのリストを次に示します

 <br>    <hr>    <input>       
 <img>  <link>   <source>  
 <col>  <area>   <base>
 <meta> <embed>  <param>  
<track>  <wbr>   <keygen> (HTML 5.2 Draft removed)

1
これは技術的に正しくありません。自己終了のボイド要素は、HTML 5を参照するには完全に有効ですhtml.spec.whatwg.org/#start-tagsになるだろう<img src='stackoverflow.png' />XHTMLとHTML 5のいずれかのバージョンに有効な
ロバート・マッキー

1
@RobertMcKeeいいえ、技術的に正しいです。終了スラッシュの使用は許可されており、エラーとしてフラグが立てられることはありませんが、HTML仕様のどこにも、使用するように指定されていることがわかります。XHTML / XMLに基づいた古いWebサイトを壊さないようにすることは許可されていますが、W3Cによって指定されているタグに終了スラッシュを使用していることを、単語または例で示すHTML仕様はどこにもありません。またはWHATWG。
ロブ

@Rob上記のセクション12.1.2.1.6でリンクしたWHATWGドキュメントによると、Then, if the element is one of the void elements, or if the element is a foreign element, then there may be a single U+002F SOLIDUS character (/). This character has no effect on void elements, but on foreign elements it marks the start tag as self-closing.imgはセクション12.1.2の無効要素です
Robert McKee

1
@RobertMcKeeはい。これは、(前のコメントで述べた理由により)スラッシュが許可される理由を概説する仕様の一部です。ただし、その要素の実際の仕様(この場合はimg)を確認する必要があります。これは、単語と例によって、終了スラッシュが不要または指定されていないことを明確に示しています。実際、調べずにそのセクションをさらに読むと、閉じスラッシュは意味がなく、何もせず、ブラウザはそれを無視する必要があります。したがって、これは無意味で無意味であり、元のコメントに戻ります。閉じるスラッシュは使用されません。
Rob

1
@Robはい、それはオプションですが、そうすることは完全に有効です。これにより、ステートメントがActually, only the first one is valid in HTML5技術的に正しくなくなります。2つ目はHTML5でも有効です。必須ではありませんが、有効です。それが必要であると誰も主張していません。仕様に従ってのみ、タグの自己終了形式の使用は、XHTMLおよびHTMLの現在のすべての形式で有効です。
ロバートマッキー

2

使用する必要があるタグの最適な使用方法:

<img src="" alt=""/>

また、HTML5で使用できます。

<img src="" alt="">

これら2つはHTML5で完全に有効です。どちらか1つを選んでそのまま使用してください。


最初はありません、それが指定されていないことで最高の任意の秒であるのに対し、HTMLの規格。最初のものは歴史的な理由でのみ許可されています!(ブラウザーが許可しないと破損する古いWebサイトでのXHTML / XML使用との互換性。)
Rob

Robがここで何を言おうとしているのかはわかりませんが、html仕様では最初のものが有効であることを指定しています。
ロバート・マッキー

2

どちらも正しい答えです。HTML5は厳格なルールに従っており、HTML5ではすべてのタグを閉じることができます。したがって、HTML5またはHTMLを使用し、適切な回答に従うかどうかは、あなた次第です。

<img src='stackoverflow.png'>
<img src='stackoverflow.png' />

2番目のプロパティがより適切です。


不正解です。最初はで指定された唯一のものである任意の HTML仕様。2つ目は歴史的な理由でのみ許可されていますが、繰り返しになりますが、必要に応じて指定されていません。
ロブ

1

-タグが空で、属性のみが含まれている。-タグに 'Closing'タグがありません。

そう、

<img src='stackoverflow.png'>
<img src='stackoverflow.png' />

どちらもHTML5でも正しいです。


最初は正しいです!2番目は、歴史的な理由でのみ許可されます。(ブラウザーが許可しないと壊れる古いWebサイトでのXHTML / XML使用との互換性。)
Rob

1

XHTMLパーサーでこれを読み込もうとする場合は、終了タグがあると便利です。エッジケースかもしれませんが、私はいつもそれをします。これを使用しても害はありません。つまり、XMLリーダーの配列を使用して、閉じられていないタグにヒットしたときにキールしないようにできることを知っています。

コンテンツを解析しようとしない場合は、クローズを無視してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.