为什么我的AVIF图片在IE和旧版Edge显示不出来?
折腾了半天把项目图片都转成AVIF格式了,结果客户反馈说公司电脑看不到图片。检查发现是IE11和Edge 79版本完全空白,换成其他格式又没问题,这是兼容性没处理好吗?
我按网上的教程直接改了标签的src路径:
image.avif,还加了HTTP头Accept=image/avif。但测试发现低于Edge 80的版本直接不渲染,有没有什么兼容方案啊?
试过用picture标签做fallback:
<picture>
<source srcset="image.avif" type="image/avif">
<img src="image.jpg" alt="fallback">
</picture>
结果低版本Edge还是显示空白,难道还要加更多格式的source吗?
把这段代码丢到页面底部,能省事就别折腾多套格式了。
<picture>标签方向是对的,不过还需要再优化一下。通用的做法是多加几个
<source>标签,覆盖更多的浏览器。比如这样:这样写的好处是:现代浏览器会优先加载AVIF,稍微旧一点的可以用WebP,实在不行就退到JPG。基本能覆盖大部分场景了。
另外提醒一下,HTTP头里的
Accept=image/avif对低版本浏览器没什么意义,因为它们根本不会发这个字段。所以重点还是放在HTML结构上。如果客户那边全是老旧系统的话,可能得考虑把主要图片都转成WebP或者JPG了,毕竟兼容性才是王道。我们做前端的,天天都在和这些老顽固浏览器斗智斗勇,习惯了。