我對(duì)前端和 CSS 相當(dāng)陌生。我正在嘗試添加 background-image
,如果支持 .avif
文件,則加載這些文件。否則回退到 .png
文件。我想知道是否可以在沒(méi)有 javascript 的情況下執(zhí)行此操作,并且無(wú)需加載所有圖像而不影響頁(yè)面速度。我在(大部分)模擬器中運(yùn)行 Chrome 107.0.5304.110
、ios 16.1
(我知道舊版本的 ios 不支持 avif,但最新版本支持。希望能同時(shí)使用兩者)和 Firefox 106.0.1
。
嘗試 1 遵循先前的答案。注意 webkit-image-set
的用法。這是我的代碼:
background-image: url("/static/img/image.png"); background-image: -webkit-image-set(url("/static/img/image.avif")1x );
此操作適用于 Chrome 和 Firefox,但 ios 上的 Safari 顯示灰色圖像。
嘗試 2 遵循此博客上的答案。注意這里使用的是image-set
。代碼:
background-image: url("/static/img/image.png"); background-image: image-set( url("/static/img/image.avif") 1x, url("/static/img/image.png") 1x, );
這在所有三個(gè)瀏覽器上都可見(jiàn),但始終顯示 png。我還反轉(zhuǎn)了圖像集中的位置,但結(jié)果相同。始終為 png。
嘗試 3,與嘗試 2 略有不同。我只是更改了第一行的格式。
background-image: url("/static/img/image.avif"); background-image: image-set( url("/static/img/image.avif") 1x, url("/static/img/image.png") 1x, );
這在 chrome/firefox 上運(yùn)行良好,但 ios 是灰色的。
有辦法解決這個(gè)問(wèn)題嗎?謝謝!