【问题标题】:Dynamically scale images by height using pure CSS in Chrome 27 and above在 Chrome 27 及更高版本中使用纯 CSS 按高度动态缩放图像
【发布时间】:2014-01-13 21:13:55
【问题描述】:

感谢James Montagne's 的解决方案,我构建了一个单行图库,仅使用 CSS 即可在 specific behaviour 中缩放图像。

效果很好 - 除了 Chrome 27 及更高版本。这里图像的宽度保持在初始值,而高度正确缩放。

请查看this Fiddle或以下代码:

HTML:

<div>
    <img src="http://placekitten.com/200/300" class="vert"/>
    <img src="http://placekitten.com/500/200" class="horiz"/>
    <img src="http://placekitten.com/200/300" class="vert"/>
    <img src="http://placekitten.com/400/300" class="horiz"/>
    <img src="http://placekitten.com/200/300" class="vert"/>
</div>

CSS:

body,html{
    height: 100%;
}

div{
    white-space: nowrap;
    height: 100%;
}

img{
    min-height: 200px;
    height: 100%;
    vertical-align: top;
}

.horiz{
    max-height: 300px;
}

.vert{
    max-height: 500px;
}

我已经翻遍了Chrome 27 changelog (~13MB),但没有找到任何有用的信息。

任何想法如何避免图像在 Chrome >= 27 中调整窗口大小时模糊?

【问题讨论】:

  • 感谢您指出这篇文章,@Eisa!但它不提供仅 CSS 的解决方案。底线是:通过JS强制重绘。尽管我不喜欢在窗口调整大小事件上附加重绘,但我会记住这一点。

标签: css google-chrome image-scaling


【解决方案1】:

如果你想用 CSS 改变图片的尺寸,你应该选择一个尺寸来改变,让另一个尺寸自动调整。

在这种情况下,如果您更关心图像的宽度,您可以去掉 min-height 并执行以下操作:

body,html{
  height: 100%;
}

div{
  height: 100%;
  width: 100%;
  padding: 0;
}

img{
  float: left;
  height: auto;
  vertical-align: top;
  width: 19%;
  margin: 0.5%;
}

参见示例here

因为我知道你有一排 5 张图片,我们可以使用 19% 的宽度和 div 的宽度并很好地适应它们。

编辑

另一方面,如果您希望控制最小和最大高度,您可以将图像包装在一个容器中,在该容器上指定一个明确的高度,然后将图像放置在容器中。在这里,您将无法控制将所有图像保持在一条线上,同时保持原始纵横比。

这个例子是here

【讨论】:

  • 感谢您的建议@scdavis41!但这不是我要找的。我需要与my posted fiddle 中看到的相同的缩放行为。该代码适用于其他流行浏览器的最新版本,因此我认为只需稍作修改即可使该代码也适用于较新版本的 Chrome。
猜你喜欢
  • 1970-01-01
  • 2015-07-07
  • 2012-06-25
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 2015-01-30
  • 2012-08-30
  • 2012-03-04
相关资源
最近更新 更多