まず、この質問のIE互換性の問題を見ましたが、少し異なる問題があります。
スパンがdisplay: block
あり、その中にH2タグを入れたいです。これはすべての(主要な)ブラウザーで見栄えがしますか?
前に述べたリンクの答えは、私が望まないH2を作成することでした。また、CSSを大幅に変更する必要があるため、をdisplay:inline
に置き換えたくありません。span
div
PS。HTMLを(バリデーターを使用して)検証したくないのですが、それを機能させたいだけです。
「(バリデーターを使用して)HTMLを検証したくない場合は、HTMLを機能させたいだけです。」あなたは非常に大きな間違いを犯しています。HTMLが検証されない場合、何が起こるかわかりません。基準は理由があります。
スパンをdivに置き換えます。デフォルトでこれがあるため、divに表示ブロックは必要ありません。スパンはインラインレベルの要素ですが、H2はブロックレベルです。インライン要素にブロックレベル要素を含めることはできません(ブロックレベル要素をアンカーでラップできるHTML5まではtrue)
これは検証され、機能します!
現在のブラウザ(古いバージョンを含む)で動作し、これが変更される可能性はほとんどありません。このようなエラーは一般的であるため、ブラウザベンダーがエラー回復メカニズムを変更することは無意味です。HTML5は、エラー回復ルールを必須にしようとしています。
一方、を使用span
するdisplay: block
代わりに、を使用することのポイントは何div
ですか?また、CSSは、さまざまな選択が意味をなす可能性のあるマークアップ要素の特定の選択に依存しないように作成する必要があります。たとえば、原則として、.foo
よりも優れたセレクターですspan.foo
。
マークアップまたはスタイルシートに大幅な変更を加えると、そのような改善で単純な変更であっても、問題が発生するリスクは無視できません。(たとえば、グローバル検索と置換は、多くの場合、やりすぎたり、何かを見逃したりします。)これは、実際にリスクが最小限である場合に、無効なマークアップの使用を継続する理由になる可能性があります。
IEの2行目の問題を最初に解決できます
h2{}
h2 span{ float:right;}
すべてのブラウザで正しい方法
<h2><span>sub content</span> Heading</h2>
間違った方法、つまりブラウザ
<h2>Heading<span>sub content</span></h2>