css picutre srcset与webp回退和不同的屏幕尺寸

yhuiod9q  于 2023-05-02  发布在  其他
关注(0)|答案(2)|浏览(110)

当我想在浏览器支持的情况下使用webp图像,否则回退到jpg时,我会这样使用:

<picture>
    <source srcset="image.webp" type="image/webp" />
    <img src="image.jpg" alt="Something">
</picture>

还可以选择适合屏幕尺寸的图像尺寸:

<picture>
    <source media="(max-width: 799px)" srcset="small.jpg">
    <source media="(min-width: 800px)" srcset="big.jpg">
    <img src="big.jpg" alt="something">
</picture>

因为我有所有的图像,所有的尺寸和两种格式,我想同时做上面的两个功能,所以我有两个小尺寸和大尺寸的webps和两个大尺寸和小尺寸的jpg。所以如果浏览器支持webp,只使用不同大小的webp图像(基于屏幕大小),如果不支持,则使用不同大小的jpg文件。
我想知道这是否可能。
我是这样测试的:

<picture>
    <source media="(max-width: 799px)" srcset="small.webp">
    <source media="(min-width: 800px)" srcset="big.webp">
    <source media="(max-width: 799px)" srcset="small.jpg">
    <source media="(min-width: 800px)" srcset="big.jpg">
    <img src="big.jpg" alt="something">
</picture>

但它只选择与屏幕尺寸匹配的第一个

z8dt9xmd

z8dt9xmd1#

您需要在每个source上使用type属性,以便浏览器能够加载它所能理解的最佳格式,例如:例如:

<picture>
    <source media="(max-width: 799px)" srcset="small.webp" type="image/webp">
    <source media="(min-width: 800px)" srcset="big.webp" type="image/webp">
    <source media="(max-width: 799px)" srcset="small.jpg" type="image/jpeg">
    <source media="(min-width: 800px)" srcset="big.jpg" type="image/jpeg">
    <img src="big.jpg" alt="something">
</picture>
hiz5n14c

hiz5n14c2#

当然有可能。说实话,这很简单

<img src="images/keyboard.webp" onerror="this.src='images/keyboard.jpg';"  alt="Image not found"/>

这段代码几乎解释了自己。
它加载webp图像。onerror处理未加载的图像。它将src设置为jpg

相关问题