7

设置:

我有一个带有圆角的简单框,它有一个标题并根据文本的数量进行扩展,如 Dan Cederholm 的防弹网页设计 (ISBN 0-321-34693-9) 中所述。

效果很好,除了在谷歌浏览器中放大。然后框的右边距消失。

它可以在 IE 和 FireFox 中正常运行。

例子:

jsFiddle 中的示例

在 chrome 中,它在缩放 110% 和其他缩放时也失败了。在 IE 或 FireFox 中没有问题。

问题:

  1. 任何想法是什么原因造成的?

  2. 一般来说,是什么让布局缩放敏感(如果存在任何这样的一般规则......)?

  3. Dan Cederholm 的书真的是防弹的吗……?

4

2 回答 2

6

您需要兼容多远?

我的意思是,如果你可以放弃 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 的支持。(这是否是一件坏事,是另一个讨论)

于 2012-06-19T17:44:36.280 回答
5

首先,您使用的是背景图像,我希望您能提到这一点。

1)所以是的,正如您帖子下方的评论中所提到的,这只是 div 的舍入错误,它会裁剪背景图像。

2)遗憾的是,我没有来源,但根据我的经验,使用文本作为度量的对象是缩放敏感的,图片有时不会相对于其他所有内容缩放,并且内容具有预定的“设置”大小(例如文本区域、单选按钮、 ETC)。

3) 没有什么是万无一失的,尤其是像网络这样不断变化的事物,在不同的浏览器上表现也不同。贸易的危害。

于 2012-06-13T17:19:51.230 回答