1

我听说只要页面通过验证,它就会始终在浏览器中正确显示。我觉得这很难相信,因为我知道填充,例如,不同的浏览器会以不同的方式处理。因此,即使页面验证正确,一个浏览器也可能无法正确显示它?

一个基本的例子是填充。IE6 是否以不同的方式处理填充,因此是 Internet Explorer 特定样式表的原因?如果是这样,有什么方法可以 100% 确保网站在所有浏览器中看起来都一样?

更新

我相当确定它不能 100% 得到保证。但是有一个例子可以用来证明这一点吗?正如我所提到的,我认为填充的处理方式不同,但是如何处理呢?

4

3 回答 3

3

不,这并不意味着您的网站在所有浏览器中看起来都一样,这意味着您已遵守标准。并且且仅所有浏览器完全按照标准实现所有标准时,您的站点在所有浏览器中看起来都完全相同。现实情况是,并非所有浏览器都始终完美地遵守所有标准。因此,这并不意味着您的网站在所有浏览器中看起来都一样。

新版本的浏览器越来越遵守标准,所以他们在正确的轨道上,但特别是旧版本的浏览器,更具体地说,微软的旧版本的浏览器,并没有真正遵守标准。

于 2013-04-30T21:53:20.597 回答
0

验证和跨浏览器兼容性是两件完全不同的事情。今天,由于没有更多的 IE6 并且几乎没有 IE7,大多数浏览器的行为已经相似。

IE6 和 7 可以决定在几种情况下使用边距折叠填充。

hasLayout 边距填充和子父级的 20 多种组合会导致 IE7 折叠填充,这是它永远不应该的。

有一些技巧,但验证 HTML 肯定不是其中之一。

您可能的意思是 Quirksmode。

quirksmode 中的 IE 具有 oldschool box 模型,它计算实际宽度 = 定义的宽度、inkl 填充和边框。标准行为将是实际宽度 = 定义宽度 + 填充 + 边框。

因此,如果您使用正确的 doctype,IE 6 和 7 将在宽度上添加填充,如果您不使用 doctype,IE6 和 7 的行为将类似于 IE5 与旧的学校盒子模型。

但是,您只需要声明 doctype,它不需要验证。

证明验证没有帮助:

<div style="float:left; margin-right:5px;">Double margin bug example in IE 6</div>
<div style="float:left;">Double margin bug example in IE 6</div>

这段代码是完全合法的并且会被验证,但是它会触发 IE6 臭名昭著的双边距错误,并且在不同的浏览器中看起来会有所不同。

还有数以千计的其他例子,就像这个(我其实不是在开玩笑)

于 2013-04-30T21:58:44.290 回答
0

不。验证是正式的事情,甚至不能保证符合规范,更不用说“看起来一样”,这甚至不是规范要求或推荐的东西。

(“HTML5 验证”有部分不同,即对一些未知版本的可变草案或“现行标准”进行无证检查。但它肯定不能保证“看起来一样”。)

于 2013-05-01T05:53:03.103 回答