2012-04-26 47 views
1

首先,我已经看到了这个问题IE Compatibility issue,但是我有一个稍微不同的问题:H2内SPAN - 浏览器兼容?所有的

我有display: block的跨度,我想提出一个H2标签里面。这在每个(主要)浏览器中看起来都不错吗?

先前所述的链路上的答案,是使H2 display:inline,这是我不希望的,也是我不想用div更换span,因为我不得不改变很多CSS。

PS。我不希望我的HTML验证(使用验证器),我只是想让它工作。

+3

当您偏离标准时,您无法保证获得的结果是 – 2012-04-26 11:31:57

+1

+1。即使它今天有效,也没有人会说它会明天。 – mddw 2012-04-26 11:35:37

+1

为什么你喜欢'跨度'那么多:o ctrl +找到所有'你的爱的跨度'替换'我们可爱的div' – Jack 2012-04-26 11:39:15

回答

2

它适用于当前的浏览器(包括旧版本),并且这不太可能会改变。像这样的错误已经足以让浏览器供应商改变他们的错误恢复机制。 HTML5即将制定错误恢复规则。

另一方面,使用spandisplay: block而不是使用div的意义是什么?应该写CSS,以便它不依赖于不同选择可能有意义的标记元素的具体选择;例如,通常,.foo是比span.foo更好的选择器。

对标记或样式表进行任何大范围的更改都具有导致问题的不可忽视的风险,即使这种改变是如此的改进和简单的改变。 (例如,全局搜索和替换通常做得太多,或者漏掉了一些东西。)这可能是继续使用无效标记的原因,在实践中风险最小的情况下。

+0

我知道我做的不是好的做法,但我不想改变HTML和CSS因为我没有写出原始的HTML和CSS,所以不想搞乱任何东西。谢谢! – 2012-04-26 13:39:58

4

当你说“我不想让我的HTML验证(使用验证器),我只是想让它工作。”你犯了一个很大的错误。如果HTML不能验证,那么就不知道会发生什么。这些标准是有原因的。

用div替换span,你不需要div上的显示块,因为它默认有这个。跨度是内联级别元素,而H2是块级别。内联元素不能包含块级元素(true至HTML5,您可以将块级元素包装到锚点中)

这将验证,并将工作

0

就可以解决IE第二线的问题第一

h2{} 
h2 span{ float:right;} 

正确的方式在所有浏览器

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

走错了路IE浏览器

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