您需要兼容多远?
我的意思是,如果你可以放弃 IE7/8,你应该使用 css3 圆角。如果您需要支持 IE8/7,您绝对应该考虑在这种情况下使用优雅降级。到处追求完美可能不值得花时间和精力。当浏览器永远不会再次更新时,这只是一个无法实现的目标。
1)可能是什么原因造成的
这是一个相当广泛的问题,我无法重现该问题,或者真的无法在 Chrome 20(测试版)中找到问题,所以我只列出一些可能会搞砸的事情。
- 一般浏览器舍入错误,浏览器不精确,未设计为精确的子像素
- 将 px 值与其他值混合,不同的 rodings 使值加起来不同..
- 受页面上其他流入元素影响的流入元素的定位(这些通常很难追踪)
- 父元素属性(例如,具有溢出隐藏、固定大小的父元素,我认为这可能是 jsfiddle 中的问题)
- 浏览器中的错误
- 以上结合
在这种情况下,jsfiddle 在页面上有大量容器和框架(溢出设置为隐藏、固定高度/宽度、基于像素)等,即使在“全屏”视图中也是如此。因此,如果您真的想确定,请在您自己的电脑上打开/测试一个 html 文件。
2)一般来说,是什么让布局缩放敏感(如果存在任何这样的一般规则......)?
在今天的浏览器中,这可能并不那么重要,因为缩放功能通常非常先进,甚至可以缩放基于全像素的布局而没有太多问题。今天仍在使用的唯一真正有问题的浏览器是 IE7。IE7 的缩放功能非常糟糕,因此您应该只对文本使用基于 % 或 em 的值。
唯一的“官方”相关指南可以在WCAG 2.0中找到,w3 可访问性指南/技术文章:
所以浏览器可以扩展,现代浏览器在这里没有问题,但设计不准确,这也是混合单位(em、%、px)的不可能完成的任务。
3) Dan Cederholm 的书真的是防弹的吗……?
在我开始之前,我还没有读过这本书……我一生中从未读过 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 的支持。(这是否是一件坏事,是另一个讨论)