srcset 和视口宽度
srcset and viewport width
我有 2 张图片:一张桌面版,一张移动版。
当视口宽度调整到 480px 以下时,我希望桌面图像被移动图像替换,就像下面的 CSS with background-image 属性 :
.logo { background-image: url(http://placehold.it/400x200&text=desktop); }
media screen and (max-width: 480px) {
.logo { background-image: url(http://placehold.it/300x150&text=mobile); }
}
我想我可以用 srcset HTML 属性实现这个:
<img src="http://placehold.it/400x200&text=desktop" alt="" srcset="http://placehold.it/300x150&text=mobile 480w">
但它不起作用,浏览器一直显示移动图像并在视口调整大小时重新缩放它,但我希望这 2 个图像保持各自的原始大小。
是否可以使用 srcset 实现此行为?
听起来你想做 "art direction",即图像的不同之处不仅仅是较大图像的较小缩小版本。如果是这样,您需要使用 picture
元素。
<picture>
<source srcset="http://placehold.it/300x150&text=mobile"
media="(max-width: 480px)">
<img src="http://placehold.it/400x200&text=desktop" alt="...">
</picture>
但是,如果您的小图片实际上是大图片的缩小版,那么您可以使用 srcset
,但您无法控制选择哪张图片。由浏览器根据屏幕密度、网络状况、用户偏好、浏览器缓存等选择最佳
<img src="http://placehold.it/400x200&text=desktop"
srcset="http://placehold.it/400x200&text=desktop 400w,
http://placehold.it/300x150&text=mobile 300w"
sizes="(max-width: 480px) 300px, 400px">
注意:如果使用 srcset
并且较大的候选图像在缓存中,则 Chrome 将始终显示这个缓存的候选图像 - 无论实际视口大小如何。
我有 2 张图片:一张桌面版,一张移动版。 当视口宽度调整到 480px 以下时,我希望桌面图像被移动图像替换,就像下面的 CSS with background-image 属性 :
.logo { background-image: url(http://placehold.it/400x200&text=desktop); }
media screen and (max-width: 480px) {
.logo { background-image: url(http://placehold.it/300x150&text=mobile); }
}
我想我可以用 srcset HTML 属性实现这个:
<img src="http://placehold.it/400x200&text=desktop" alt="" srcset="http://placehold.it/300x150&text=mobile 480w">
但它不起作用,浏览器一直显示移动图像并在视口调整大小时重新缩放它,但我希望这 2 个图像保持各自的原始大小。
是否可以使用 srcset 实现此行为?
听起来你想做 "art direction",即图像的不同之处不仅仅是较大图像的较小缩小版本。如果是这样,您需要使用 picture
元素。
<picture>
<source srcset="http://placehold.it/300x150&text=mobile"
media="(max-width: 480px)">
<img src="http://placehold.it/400x200&text=desktop" alt="...">
</picture>
但是,如果您的小图片实际上是大图片的缩小版,那么您可以使用 srcset
,但您无法控制选择哪张图片。由浏览器根据屏幕密度、网络状况、用户偏好、浏览器缓存等选择最佳
<img src="http://placehold.it/400x200&text=desktop"
srcset="http://placehold.it/400x200&text=desktop 400w,
http://placehold.it/300x150&text=mobile 300w"
sizes="(max-width: 480px) 300px, 400px">
注意:如果使用 srcset
并且较大的候选图像在缓存中,则 Chrome 将始终显示这个缓存的候选图像 - 无论实际视口大小如何。