2

まず、この質問のIE互換性の問題を見ましたが、少し異なる問題があります。

スパンがdisplay: blockあり、その中にH2タグを入れたいです。これはすべての(主要な)ブラウザーで見栄えがしますか?

前に述べたリンクの答えは、私が望まないH2を作成することでした。また、CSSを大幅に変更する必要があるため、をdisplay:inlineに置き換えたくありません。spandiv

PS。HTMLを(バリデーターを使用して)検証したくないのですが、それを機能させたいだけです。

4

3 に答える 3

4

「(バリデーターを使用して)HTMLを検証したくない場合は、HTMLを機能させたいだけです。」あなたは非常に大きな間違いを犯しています。HTMLが検証されない場合、何が起こるかわかりません。基準は理由があります。

スパンをdivに置き換えます。デフォルトでこれがあるため、divに表示ブロックは必要ありません。スパンはインラインレベルの要素ですが、H2はブロックレベルです。インライン要素にブロックレベル要素を含めることはできません(ブロックレベル要素をアンカーでラップできるHTML5まではtrue)

これは検証され、機能します

于 2012-04-26T11:36:34.143 に答える
2

現在のブラウザ(古いバージョンを含む)で動作し、これが変更される可能性はほとんどありません。このようなエラーは一般的であるため、ブラウザベンダーがエラー回復メカニズムを変更することは無意味です。HTML5は、エラー回復ルールを必須にしようとしています。

一方、を使用spanするdisplay: block代わりに、を使用することのポイントは何divですか?また、CSSは、さまざまな選択が意味をなす可能性のあるマークアップ要素の特定の選択に依存しないように作成する必要があります。たとえば、原則として、.fooよりも優れたセレクターですspan.foo

マークアップまたはスタイルシートに大幅な変更を加えると、そのような改善で単純な変更であっても、問題が発生するリスクは無視できません。(たとえば、グローバル検索と置換は、多くの場合、やりすぎたり、何かを見逃したりします。)これは、実際にリスクが最小限である場合に、無効なマークアップの使用を継続する理由になる可能性があります。

于 2012-04-26T12:02:52.963 に答える
0

IEの2行目の問題を最初に解決できます

h2{}
h2 span{ float:right;}

すべてのブラウザで正しい方法

<h2><span>sub content</span>  Heading</h2>

間違った方法、つまりブラウザ

<h2>Heading<span>sub content</span></h2>
于 2012-04-26T11:40:23.490 に答える