web-dev-qa-db-ja.com

<div class = "clear" />ではなく<divclass = "clear"> </ div>なのはなぜですか?

私はちょうどそれを実現しました:

<div class="clear"/>

一連のフローティングdivの後、レイアウトが混乱しますが、

<div class="clear"></div> 

正常に動作します。

誰かがこれを説明できますか?

これはCSSです:

div.clear {
    clear:both;
}
11
Edward Tanguay
<div class="clear"/>

XHTMLページをtext/htmlとして提供している場合、ブラウザーは実際のXMLパーサーを使用してページを読み取っていません。彼らは、自己終了タグについて知らない単純な古いHTMLパーサーを使用しています。 HTML4パーサーにとって、これは奇妙な句読点が含まれている単なるオープンタグです。 (ブラウザーパーサーが実際にSGMLのルールを使用している場合、それは他の望ましくないことですが、そうではありません。)

IE9が普及するまで、汎用Webページをapplication/xhtml+xmlとして提供することはできません。これは、ブラウザーで実際のXML解析ルールを使用するために必要なものです。それまでは、XHTMLドキュメントを作成する場合は、ドキュメントをプレーンHTMLと下位互換性を持たせる必要があります。つまり、常におよびonlyEMPTYコンテンツモデルを持つように宣言された要素に自己終了構文を使用します。 (imgbrなど)

HTML互換のXHTMLを作成するために何をしなければならないかについてはもっと多くのルールがありますが、それが最も重要なものです。 付録C XHTML1.0標準の違いのリストです。少し複雑に見えますが、ポイントの多くは、とにかく使用したくない機能に対応しており、Netscape 4のような古いブラウザであると話しているため、現在は無関係なものもあります。/>の前にスペースを置く方法はたとえば、一般的に使用されているものでは不要になりました。

25
bobince

HTML 4.01仕様セクション7.5.4 によると、<div>タグには終了タグが必要です。

12
Donut
<div class="clear"/>  

この構文は有効なHTML/XHTMLではありません。 canコンテンツを含むタグcannot自己閉鎖型(タグにコンテンツが必要ない場合でも。したがって、div、span、pなどのタグを含むコンテンツは自己閉鎖型タグになることはできません。逆に、<br />は常に自己終了する必要があります。

2
NickG