我听说只要页面有效,它就会始终在浏览器中正确显示。我觉得很难相信,因为我知道填充,例如,不同的浏览器处理不同。因此,即使页面验证正确,一个浏览器可能无法正确显示它?
一个基本的例子是填充。 IE6不是以不同的方式处理填充,因此是Internet Explorer特定样式表的原因吗?如果是这样,有没有办法100%确定网站在所有浏览器中看起来都一样?
更新
我很确定它无法100%获得成功。但有一个例子我可以用来证明这一点吗?正如我所提到的,我认为填充的处理方式不同,但是如何处理?
答案 0 :(得分:3)
不,这并不意味着您的网站在所有浏览器中看起来都一样,这意味着您已遵守标准。而 if - 只有如果 - 所有浏览器都严格按照标准实施所有标准,那么您的网站在所有浏览器中看起来都会完全相同。实际情况是,并非所有浏览器都始终完全遵守所有标准。因此,这并不意味着您的网站在所有浏览器中看起来都一样。
新版本的浏览器越来越多地遵循标准,因此它们处于正确的轨道上,但尤其是旧版本的浏览器,更具体地说,微软的旧版浏览器并没有真正遵守标准。
答案 1 :(得分:0)
验证和跨浏览器兼容性是两个完全不同的东西。 今天,由于没有IE6,大多数没有IE7,大多数浏览器已经表现得相似。
IE6和7可以决定在几种情况下以保证金折叠填充。
有超过20种hasLayout边距填充和子父级的组合导致IE7崩溃填充,这是它永远不应该的。
有一些技巧,但验证HTML肯定不是其中之一。
你可能意味着Quirksmode。
在quirksmode中的IE有oldschool盒子模型,它计算实际宽度=定义的宽度,墨水填充和边框。标准行为将是实际宽度=定义的宽度+填充+边界。
因此,如果您使用正确的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臭名昭着的双边距错误,并且浏览器的外观也不同。
还有成千上万的其他例子,就像这个(我实际上不是在开玩笑)
答案 2 :(得分:0)
没有。 Validation is a formal thing并且不保证甚至不符合规范,更不要“看起来相同”,这甚至不是规范要求或推荐的。
(“HTML5验证”部分不同,即对可变草案或“生活标准”的某些未知版本进行无证检查。但肯定不能保证“看起来相同”之类的东西。)