我有几列,我使用 flex 赋予它们相同的宽度。每个包含 img
标签,我希望这些图像显示 object-fit: cover
尺寸。
.container {
display: flex;
flex-direction: row;
width: 100%;
}
.test {
flex: 1;
margin-right: 1rem;
overflow: hidden;
height: 400px;
}
img {
object-fit: cover;
}
<div class="container">
<div class="test"><img src="http://placehold.it/1920x1080"></div>
<div class="test"><img src="http://placehold.it/1920x1080"></div>
<div class="test"><img src="http://placehold.it/1920x1080"></div>
<div class="test"><img src="http://placehold.it/1920x1080"></div>
</div>
图像没有调整大小,如 本演示 所示。这是为什么?
原文由 Jack Guy 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 规格:
关键术语是: 安装到由其使用的高度和宽度建立的盒子
图像被替换,而不是它的容器。并且其使用的高度和宽度所建立的框与图像本身有关,而不是其容器。
因此,废弃容器并使图像本身成为弹性项目。
修改后的代码笔
额外细节
使用
cover
图像保留其纵横比并覆盖所有可用空间。使用此选项,可以在屏幕外裁剪大部分图像。使用
contain
纵横比也保持不变,但图像缩放以适合框内。这可能会导致左侧和/或右侧(纵向适合)或顶部和/或底部(横向适合)出现空白。object-position
属性可用于在其框内移动图像。使用
fill
宽高比被放弃,图像的大小适合盒子。浏览器兼容性
在撰写本文时, Internet Explorer 不支持
object-fit
。有关解决方法,请参阅:object-fit
回退到 Edge(和其他浏览器)object-fit
Internet Explorer 的 polyfillobject-fit
的支持object-fit
将图像填充/适合容器的属性。