你需要兼容到哪个版本?
我的意思是,如果可以放弃支持IE7/8,应该使用CSS3圆角。如果需要支持IE8/7,应该考虑在这种情况下使用优雅降级。在所有浏览器中都追求完美可能不值得花费时间和精力,因为当浏览器永远不会再更新时,这个目标是无法实现的。
1)可能是什么原因引起的?
那是一个相当广泛的问题,我无法重现这个问题,或者在Chrome 20(beta)中找到一个问题,所以我将列出一些可能会出错的事情。
- 一般浏览器的四舍五入误差,浏览器不精确,不是设计为亚像素精度的。
- 将px值与其他值混合使用,不同的舍入方式使值相加的结果不同。
- 内联元素的定位受到页面上其他内联元素的影响(这些通常很难跟踪)。
- 父元素属性(例如带有溢出隐藏、固定大小的父元素,在jsfiddle中可能是问题所在)。
- 浏览器中的错误。
- 以上因素的组合。
在这种情况下,jsfiddle在页面上有大量的容器和框架(设置了隐藏的溢出、固定的高度/宽度、基于像素),即使在“全屏”视图中也是如此。因此,如果您真的想确保,可以在自己的电脑上创建一个html文件进行打开/测试。
2)总的来说,什么会使布局对缩放敏感(如果存在这样的一般规则...)?
在当今的浏览器中,这可能并不是特别相关,因为缩放功能通常非常先进,甚至可以轻松缩放基于完整像素的布局。唯一真正存在问题的浏览器是仍在使用的IE7。IE7的缩放能力很糟糕,因此您应该仅使用基于%或em的文本值。
唯一“官方”的相关指南可以在
WCAG 2.0中找到,这是w3无障碍性指南/技术的概述。
因此,浏览器可以进行缩放,现代浏览器在这方面没有问题,但它们并不是为了准确性而设计的,而且由于混合单位(em、%、px),这也是一项不可能完成的任务。
3) 丹·塞德霍姆的书真的防弹吗...?
在我开始之前,我没有读过这本书... 我从未读过生活中的CSS书籍(有很多其他资源),但我最首要的技能是梦想它。
让我们从“什么是防弹?”开始。在网页设计中,“防弹”意味着它将在任何地方都能正常工作,并且不会崩溃。这单独就应该给你一个线索。
当他写那本书时,它很可能是防弹的,但网络是一个充满活力的地方,即使我看最新的博客文章,它的发布日期是去年12月。自那时以来,至少有3个新版本的Chrome发布了(粗略估计),甚至还有更多的Firefox版本。这次微软坐在了他的屁股上(如果他们决定进行快速发布时间表,我们就会陷入麻烦)。
事情发生了变化,新的错误肯定会在此期间引入。
无论是什么导致它出错,没有什么是真正防弹的,只是非常接近你想要的总是发生,浏览器之间略有差异。
这并不意味着这是一本糟糕的书,看他的简历,他绝对是一个网页设计领域的专家,因此他在很多方面可能是正确的。我只希望他能解释为什么要以某种方式完成某些事情,因为这样会让你比仅仅学会做事更加明智。
A: "You always use EMs for text! EMs are annoying! Why do you do that anyway?!"
B: "I dunno, read somewhere I should..."
A: "Lets just use pixels! Pixels always work."
B: "Hmmm ok."
你刚刚失去了IE7的支持。(这是否是一件坏事,另当别论)