`size` 是否需要和 `srcset` 一起使用,有什么优缺点?

Does `size` need to be used with `srcset`, what are the pros / cons?

size需要和srcset一起使用吗?我有一个网站,除了一个 50 像素的板之外,它几乎全屏显示大图像。此图像的比例不需要根据不同的屏幕比例/尺寸而改变。

目前我只使用 srcset 这样的:

<img 
src="bath.jpg"
srcset="bath-large.jpg 1500w, bath-medium.jpg 1000w, bath-small.jpg 600w"
alt="#"
>

这个问题是,如果用户在桌面上打开压缩浏览器中的站点(因此将加载小图像)然后使他们的浏览器 window 变大,小图像将只是缩放,所以它现在将被像素化。 (如果他们刷新页面,他们现在将获得大或中图像,但我怀疑每次调整浏览器大小时都会刷新页面 window)

通过使用 size 属性,如果浏览器 window 调整大小,它会尝试重新计算要使用的图像吗?如果不是,size 属性的用例是什么?

您在 srcset 中指定的大小是针对图像响应的情况,换句话说,当图像没有固定的情况下。

如果调整图片大小,支持 srcset 的浏览器将尝试从 srcset 中找到最适合的源图像。

sizes-属性(注意 s)可以帮助浏览器决定加载哪个分辨率。在选择分辨率的时候,CSS可能还没有渲染,所以我们需要复制这个信息。

它向浏览器声明 space 图像在布局中的位置。它默认为 "100vw",这意味着 "the width of the viewport",这是一个合理的默认值,因为图像可能不会显示得比这更大,所以在最坏的情况下,加载的图像分辨率太大(更好比太小)。

因此,当您对不跨越整个视口宽度的图像使用流体布局时,sizes-Attribute 很有意义,可能取决于断点。例如,sizes="(min-width: 900px) 33.3vw, 100vw" 表示当浏览器视口大于 900 像素(或 450 像素和 2dpi 视网膜屏幕等)时图像处于 3 列布局中。

您可以找到一篇关于数学细节的精彩文章 here

在你的情况下sizes没有帮助(虽然你可以写sizes="calc(100vw - 100px)"。浏览器需要重新下载更大的分辨率来决定,每个浏览器的实现方式可能不同。Chrome 目前是这样做的(但是它不做相反的事情,一旦下载了高分辨率,较低的分辨率就会被忽略,因为 'not necessary')。