验证和跨浏览器兼容性是两件完全不同的事情。今天,由于没有更多的 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 臭名昭著的双边距错误,并且在不同的浏览器中看起来会有所不同。
还有数以千计的其他例子,就像这个(我其实不是在开玩笑)