带有 webp 的图片 srcset - 如何实现尺寸?
picture srcset with webp - how to implement sizes?
我正在尝试使用支持 WebP 的图片标签。
(如果屏幕尺寸超过 1024 像素,加载完整图像,最大宽度 1024 像素加载图像 1024,最大宽度 768 像素加载图像 768,最大宽度 500 像素加载图像 500)
我有这段代码,w3 验证器抱怨:当 srcset 属性有任何带有宽度描述符的图像候选字符串时,sizes 属性也必须存在。
如何在其中实现尺寸?有没有 better/different 我应该这样做的方法?
<picture>
// load webp in different sizes if browser supports it
<source media="(min-width: 1025px)"
srcset="webp/image-full.webp"
type="image/webp">
<source media="(max-width: 1024px)"
srcset="webp/image-1024.webp"
type="image/webp">
<source media="(max-width: 768px)"
srcset="webp/image-768.webp"
type="image/webp">
<source media="(max-width: 500px)"
srcset="webp/image-500.webp"
type="image/webp">
// load jpg in different sizes if browser doesn't support webp
<source media="(min-width: 1025px)"
srcset="siteimages/image-full.jpg"
type="image/jpeg">
<source media="(max-width: 1024px)"
srcset="siteimages/image-1024.jpg"
type="image/jpeg">
<source media="(max-width: 768px)"
srcset="siteimages/image-768.jpg"
type="image/jpeg">
<source media="(max-width: 500px)"
srcset="siteimages/image-500.jpg"
type="image/jpeg">
// fallback in different sizes, as well as regular src.
<img
srcset="siteimages/image-1024.jpg,
siteimages/image-768.jpg,
siteimages/image-500.jpg"
src="siteimages/image-full.jpg"
alt="image description"
class="myimageclass">
</picture>
虽然在 img
标签中提供多个 srcset
标签浏览器需要 scrset
和 sizes
属性来帮助浏览器选择正确的标签。
您可以像下面这样添加更新代码,它应该可以正常工作 -
<picture>
// load webp in different sizes if browser supports it
<source media="(min-width: 1025px)"
srcset="webp/image-full.webp"
type="image/webp">
<source media="(max-width: 1024px)"
srcset="webp/image-1024.webp"
type="image/webp">
<source media="(max-width: 768px)"
srcset="webp/image-768.webp"
type="image/webp">
<source media="(max-width: 500px)"
srcset="webp/image-500.webp"
type="image/webp">
// load jpg in different sizes if browser doesn't support webp
<source media="(min-width: 1025px)"
srcset="siteimages/image-full.jpg"
type="image/jpeg">
<source media="(max-width: 1024px)"
srcset="siteimages/image-1024.jpg"
type="image/jpeg">
<source media="(max-width: 768px)"
srcset="siteimages/image-768.jpg"
type="image/jpeg">
<source media="(max-width: 500px)"
srcset="siteimages/image-500.jpg"
type="image/jpeg">
// fallback in different sizes, as well as regular src.
<img
srcset="siteimages/image-1024.jpg 1024w,
siteimages/image-768.jpg 768w,
siteimages/image-500.jpg 500w"
sizes="(max-width: 1024px) 1024px,
(max-width: 768px) 768px,
(max-width: 500px) 500px"
src="siteimages/image-full.jpg"
alt="image description"
class="myimageclass">
</picture>
简而言之,我们告诉浏览器加载 srcset 列表中引用的与所选插槽大小最匹配的图像
基于@varun 的回答,您可以稍微简化一下代码:
- 改进:
image/jpeg
如果已经在 <img>
中则不需要 - 浏览器会自动回退
- 改进:合并多个
<source>
标签。
- 修复:将
100vw
的默认宽度添加到 sizes
标签(即未定义大于 1024 像素的视口)
- 修复:
media
标签用于艺术指导,不用于分辨率切换,请参阅Mozilla's guide区别
<picture>
// load webp in different sizes if browser supports it
<source type="image/webp"
sizes=" (max-width: 500px) 500px,
(max-width: 768px) 768px,
(max-width: 1024px) 1024px,
100vw"
srcset="
webp/image-500.webp 500w,
webp/image-768.webp 768w,
webp/image-1024.webp 1024w,
webp/image-full.webp 1920w
"
>
// fallback on original src.
<img
srcset="siteimages/image-1024.jpg 1024w,
siteimages/image-768.jpg 768w,
siteimages/image-500.jpg 500w"
sizes=" (max-width: 500px) 500px,
(max-width: 768px) 768px,
(max-width: 1024px) 1024px,
100vw"
src="siteimages/image-full.jpg"
alt="image description"
class="myimageclass">
</picture>
我正在尝试使用支持 WebP 的图片标签。
(如果屏幕尺寸超过 1024 像素,加载完整图像,最大宽度 1024 像素加载图像 1024,最大宽度 768 像素加载图像 768,最大宽度 500 像素加载图像 500)
我有这段代码,w3 验证器抱怨:当 srcset 属性有任何带有宽度描述符的图像候选字符串时,sizes 属性也必须存在。
如何在其中实现尺寸?有没有 better/different 我应该这样做的方法?
<picture>
// load webp in different sizes if browser supports it
<source media="(min-width: 1025px)"
srcset="webp/image-full.webp"
type="image/webp">
<source media="(max-width: 1024px)"
srcset="webp/image-1024.webp"
type="image/webp">
<source media="(max-width: 768px)"
srcset="webp/image-768.webp"
type="image/webp">
<source media="(max-width: 500px)"
srcset="webp/image-500.webp"
type="image/webp">
// load jpg in different sizes if browser doesn't support webp
<source media="(min-width: 1025px)"
srcset="siteimages/image-full.jpg"
type="image/jpeg">
<source media="(max-width: 1024px)"
srcset="siteimages/image-1024.jpg"
type="image/jpeg">
<source media="(max-width: 768px)"
srcset="siteimages/image-768.jpg"
type="image/jpeg">
<source media="(max-width: 500px)"
srcset="siteimages/image-500.jpg"
type="image/jpeg">
// fallback in different sizes, as well as regular src.
<img
srcset="siteimages/image-1024.jpg,
siteimages/image-768.jpg,
siteimages/image-500.jpg"
src="siteimages/image-full.jpg"
alt="image description"
class="myimageclass">
</picture>
虽然在 img
标签中提供多个 srcset
标签浏览器需要 scrset
和 sizes
属性来帮助浏览器选择正确的标签。
您可以像下面这样添加更新代码,它应该可以正常工作 -
<picture>
// load webp in different sizes if browser supports it
<source media="(min-width: 1025px)"
srcset="webp/image-full.webp"
type="image/webp">
<source media="(max-width: 1024px)"
srcset="webp/image-1024.webp"
type="image/webp">
<source media="(max-width: 768px)"
srcset="webp/image-768.webp"
type="image/webp">
<source media="(max-width: 500px)"
srcset="webp/image-500.webp"
type="image/webp">
// load jpg in different sizes if browser doesn't support webp
<source media="(min-width: 1025px)"
srcset="siteimages/image-full.jpg"
type="image/jpeg">
<source media="(max-width: 1024px)"
srcset="siteimages/image-1024.jpg"
type="image/jpeg">
<source media="(max-width: 768px)"
srcset="siteimages/image-768.jpg"
type="image/jpeg">
<source media="(max-width: 500px)"
srcset="siteimages/image-500.jpg"
type="image/jpeg">
// fallback in different sizes, as well as regular src.
<img
srcset="siteimages/image-1024.jpg 1024w,
siteimages/image-768.jpg 768w,
siteimages/image-500.jpg 500w"
sizes="(max-width: 1024px) 1024px,
(max-width: 768px) 768px,
(max-width: 500px) 500px"
src="siteimages/image-full.jpg"
alt="image description"
class="myimageclass">
</picture>
简而言之,我们告诉浏览器加载 srcset 列表中引用的与所选插槽大小最匹配的图像
基于@varun 的回答,您可以稍微简化一下代码:
- 改进:
image/jpeg
如果已经在<img>
中则不需要 - 浏览器会自动回退 - 改进:合并多个
<source>
标签。 - 修复:将
100vw
的默认宽度添加到sizes
标签(即未定义大于 1024 像素的视口) - 修复:
media
标签用于艺术指导,不用于分辨率切换,请参阅Mozilla's guide区别
<picture>
// load webp in different sizes if browser supports it
<source type="image/webp"
sizes=" (max-width: 500px) 500px,
(max-width: 768px) 768px,
(max-width: 1024px) 1024px,
100vw"
srcset="
webp/image-500.webp 500w,
webp/image-768.webp 768w,
webp/image-1024.webp 1024w,
webp/image-full.webp 1920w
"
>
// fallback on original src.
<img
srcset="siteimages/image-1024.jpg 1024w,
siteimages/image-768.jpg 768w,
siteimages/image-500.jpg 500w"
sizes=" (max-width: 500px) 500px,
(max-width: 768px) 768px,
(max-width: 1024px) 1024px,
100vw"
src="siteimages/image-full.jpg"
alt="image description"
class="myimageclass">
</picture>