首先,我已经看到了这个问题IE Compatibility issue,但我的问题略有不同:
我有一个display: block
的范围,我想在其中添加一个H2标签。这在每个(主要)浏览器中看起来都不错吗?
上述链接的答案是制作H2 display:inline
,这是我不想要的,而且我也不想将span
替换为div
因为我不得不改变很多CSS。
PS。我不希望我的HTML验证(使用验证器),我只是想让它工作。
答案 0 :(得分:4)
当你说“我不希望我的HTML验证(使用验证器)时,我只是想让它工作。”你犯了一个很大的错误。如果HTML没有验证,则无法确定可能发生的情况。标准是有原因的。
用div替换span,你不需要div上的显示块,因为默认情况下它是这样的。 span是内联级别元素,而H2是块级别。内联元素不能包含块级元素(最多HTML5,您可以在其中包含块级元素)
这将验证,并工作!
答案 1 :(得分:2)
它适用于当前的浏览器(包括旧版本),并且它不太可能发生变化。像这样的错误很常见,使浏览器供应商更改其错误恢复机制毫无意义。 HTML5即将强制执行错误恢复规则。
另一方面,将span
与display: block
一起使用而不是使用div
有什么意义?应该编写CSS,使其不依赖于标记元素的特定选择,其中不同的选择可能有意义;例如,.foo
是一个比span.foo
更好的选择器。
对标记或样式表进行任何大量更改都会产生不可忽视的风险,即使更改是一种改进也是一种简单的改进。 (例如,全局搜索和替换通常会做太多,或者错过了某些内容。)这可能是继续使用无效标记的原因,在实践中风险最小的情况下。
答案 2 :(得分:0)
我们可以先解决IE二线问题
h2{}
h2 span{ float:right;}
所有浏览器中的正确方法
<h2><span>sub content</span> Heading</h2>
错误的方式即浏览器
<h2>Heading<span>sub content</span></h2>