2011-04-29 106 views
5

我使用的图像必须在div的内部自动缩放,div的高度由根div定义。 在所有主流浏览器中,缩放都很好,在图片上使用height: 100%。 但是,似乎在某些浏览器上,图像容器并未根据其内容(图像)调整其宽度。CSS图像的容器缩放比例高度为100%

自己检查live demo

此演示使用带蓝色背景的图像容器。

预期行为:由于容器宽度和高度应与其内容(图像)相同,因此不应显示此背景。

实际行为

  • 在Chrome 11,Safari 5及IE9,如预期的行为。

On Chrome 12

  • 在Firefox 3.6/4.0和Opera 11,如预期的行为不是:显示蓝色背景。

On Opera 11

什么是主流浏览器之间的差异强的根本原因?

回答

2

在Firefox的情况下,这看起来像一个错误。我提交了https://bugzilla.mozilla.org/show_bug.cgi?id=653739

除非实际需要,否则可以通过删除overflow:hidden来解决。

+0

不错。其实我无法解决'overflow:hidden'的问题。我需要div宽度是正确的,以便我可以在其中添加其他内容,就像您在悬停现场演示时看到的那样。 – 2011-04-29 17:57:19

+0

在这种情况下,你最好的解决方法是除了'overflow:hidden' div之外,而不是使用'100%'来设置'overflow:hidden' div子元素的像素高度或'inherit'。 – 2011-04-29 20:08:36

+0

这是two7s_clash解释的一个很好的补充。 – 2011-04-30 12:48:19

1

那些后来的浏览器更严格(正确地)解释inline-block

也就是说,你的元素是内联定位的(就像一个跨度),但是元素的内容就像元素是块一样布置。

+0

有趣。似乎你是对的!你必须是http://jsfiddle.net/uJMce/5/的作者?如果是这种情况,你是否能够防止为'.ui' CSS类使用固定的'top'值?事实是,我不知道在我的真实情况下图片的大小是多少。因此,这应该是通用的。 – 2011-04-29 13:55:08

+0

@Aranud不,那不是我。看起来你改变了你的演示,并且你现在问了一个不同的问题。 – 2011-04-29 14:43:45

+0

其实我改变了演示链接,以反映我以为是你的答案。无论如何,你的答案是正确的,如果没有更好的建议(如解决方法),那么这个问题就是你的问题。 – 2011-04-29 17:59:11