我正在使用object-fit: cover
一堆图像。图像的框架占据50vw
并具有动态高度。封面属性效果很好,但这意味着我真的不知道我的实际图像在给定时间会有多宽。
它很可能会比 更宽,50vw
并且由于适合对象的覆盖,它的溢出将被隐藏。
当我尝试使用 srcset 时,问题就出现了。我无法为尺寸属性提供可靠的宽度。
我知道大小只需要一个近似值,但我很好奇是否有人以前处理过这个问题。
我正在使用object-fit: cover
一堆图像。图像的框架占据50vw
并具有动态高度。封面属性效果很好,但这意味着我真的不知道我的实际图像在给定时间会有多宽。
它很可能会比 更宽,50vw
并且由于适合对象的覆盖,它的溢出将被隐藏。
当我尝试使用 srcset 时,问题就出现了。我无法为尺寸属性提供可靠的宽度。
我知道大小只需要一个近似值,但我很好奇是否有人以前处理过这个问题。
您可以像这样在 srcset 上添加宽度、高度、最小和最大宽度或高度作为属性。
<picture>
<source srcset="images/w350/1.png" media="(max-width: 576px)" width="358px"
height="250px">
<source srcset="images/w500/1.png" media="(max-width: 991px)" width="502px"
height="350px">
<img src="images/1.png" data-src="images/1.png">
</picture>
您可以根据媒体查询给出 srcset,首先弄清楚图像的比例。然后您可以确定在每个屏幕尺寸的 50vw 中可以看到多少图像。
这并没有具体回答这个问题,但最后,如果没有任何帮助......人们可以开箱即用并且如果语义不是问题(通常是这样),那么人们仍然可以使用background-image
并让它通过媒体查询有条件地呈现。如果媒体查询不匹配,它将不会下载background-image
内部并且background-size
比object-fit
无论如何都有更好的支持。
不确定,但这是我为几乎所有动态图像所做的:
我制作了一个<div>
并使其成为我想要的任何大小,并将图像内联设置为 div 的 bg(因为大多数模板语言无法在 CSS 中设置)。
.ratio {
width: 50vw;
}
.ratio-4-3 {
padding-top: 75%;
}
.vh-100 {
height: 100vh;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<div class="d-flex">
<div class="flex-child">
<div class="ratio ratio-4-3"style="background: url('https://i.cdn.turner.com/adultswim/big/img/2018/05/07/rick-and-morty.jpg')no-repeat center center; background-size: cover;"></div>
</div>
<div class="flex-child">
<div class="ratio vh-100"style="background: url('https://cnet3.cbsistatic.com/img/NMPqQxi-Gbz3JS9Q1BpqpMfG-AQ=/1600x900/2017/03/24/80d3cf97-5aae-4750-b856-53c89005dbc1/rickandmorty3.jpg')no-repeat center center; background-size: cover;"></div>
</div>
</div>