【发布时间】:2019-09-24 04:03:33
【问题描述】:
我有很多使用 flexbox 布局的图像。大多数图像具有 2:1 的纵横比,但有些则没有(可能太宽或太高)。无论如何,我希望这些图像保持在 2:1 的纵横比范围内。
在https://jsfiddle.net/5h0gx7L4/ 中,您可以看到太宽的框很好,并且保持在 2:1 的纵横比范围内(不确定,但可能是因为flex-basis 控制宽度),但是太高的框突破了2:1 纵横比,即使它应该包含在内。
我不能使用任何硬编码的高度,因为它是一种流畅且响应迅速的设计,并且所有内容都会随着您更改窗口大小而上下缩放。但是包含图像的 div 应该有 2:1 的纵横比,这样里面的任何图像都包含在其中并且不会变大。
div
{
display: flex;
flex-wrap: wrap;
}
div > div {
flex-basis: 25%;
}
img {
border: 1px solid black;
width: 100%;
height: 100%;
object-fit: contain;
}
<div>
<div><img src=https://placeholder.pics/svg/400x200/FF9A9A></div>
<div><img src=https://placeholder.pics/svg/400x200/FF9A9A></div>
<div><img src=https://placeholder.pics/svg/800x200/FF9A9A></div>
<div><img src=https://placeholder.pics/svg/400x200/FF9A9A></div>
<div><img src=https://placeholder.pics/svg/400x200/FF9A9A></div>
<div><img src=https://placeholder.pics/svg/400x400/FF9A9A></div>
<div><img src=https://placeholder.pics/svg/400x200/FF9A9A></div>
</div>
【问题讨论】:
-
几年前,我开始使用
background-image而不是img,只是因为要处理您发布的确切情况。如果你想保持语义,你可以将img标签保留在那里,但隐藏它。 -
你试过
object-fit: cover;吗? -
@pavelbere 是的,在 jsfiddle 中尝试它不起作用。
标签: html css responsive-design flexbox