`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')。
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')。