You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closing as WontFix per c#35, due to the following:
- The widespread adoption of WebP (addresses CDN use case)
- Forthcoming AV1 based image formats (ditto).
- Memory inefficiency with allowing arbitrary video in image.
- Most sites have already switched to <video muted> now that autoplay is allowed.
有些網站會用 GIF 來做一些圖檔,畢竟會動嘛,看起來就比一些靜態的圖片還要厲害,還要來得更吸引人。或其實不只是因為吸引人,而是有些需求本來就需要一個會動的圖,例如說貼圖,會動是很正常的。
但是 GIF 的缺點之一眾所皆知,就是檔案很大,真的很大。尤其是手機上因為解析度比較高,可能會需要用到三倍大小的圖片,就算只顯示 52 px,也要準備 156px 的圖檔,佔的空間就更多了。以網頁來說,當然是要載入的資源越少越好,越小也越好。
因此,很多網站會改用
<video>
標籤來呈現這些動圖,只要先轉成 mp4 格式,檔案大小就能小很多。不過轉成<video>
的問題大概就是原先用<img>
的一些好處會不見,像是 lazy loading 似乎就沒有原生支援,有一些麻煩。而我在查資料的過程中,居然意外發現在 Safari 上面,
<img>
是支援 mp4 的!也就是說,你可以這樣做:而且這個功能推出很久了,從 2017 的時候就有了:Bug 176825 - [Cocoa] Add an ImageDecoder subclass backed by AVFoundation
我是從這篇文章知道的:Evolution of <img>: Gif without the GIF
如果
<img>
裡面也可以放 mp4 的話,就可以同時利用到兩者的優點,又不用換標籤,又支援 lazy loading,然後檔案大小又一下縮減了許多。但可惜的事情是,只有 Safari 有支援而已,就算過了六年,在 Chromium 以及 Firefox 上都沒看到這個功能,而且未來也沒什麼機會看到了。
之所以會這樣講,是因為 Chromium 已經明確表示不會支援,討論串在這邊:Issue 791658: Support <img src="*.mp4"> ,在 2018 的時候就已經被標記為 Wont fix,理由如下:
第一點提到的是 WebP 其實也有個 Animated WebP 的格式,可以放在
<img src>
裡面而且也會動,檔案大小更小,其他優缺點可以參考 Google 自己寫的:使用 WebP 動畫有什麼好處?而第二點是在說比較新的圖片格式 AVIF 也有 Animated AVIF,同樣也支援動圖。
如果這些新的圖片格式都可以取代 GIF 的話,好像確實沒什麼必要一定要使用 mp4?
而 Firefox 的話雖然沒有說不會做,但是 issue 也已經很久沒動了:Add support for video formats in <img>, behaving like animated gif
也有人希望可以把這個功能加入規格,但也有一陣子沒有動靜:Require img to be able to load the same video formats as video supports #7141
總而言之,看起來這個功能應該只會在 Safari 上面有了。
可惜我在用的 image service 的自動轉檔功能只支援 GIF 轉 mp4,不支援轉成 animated WebP 或是 animated AVIF,不然就超方便的。
總結
如果想要繼續用
<img>
來放動圖的話,最完整的方式應該是使用<picture>
標籤搭配多種檔案格式,像這樣:這樣就可以確保在每個瀏覽器上面都可以呈現出結果,並且會選擇通常檔案大小較小的圖片。
我隨便試了一下,自己錄了一個簡單的 gif,原始大小是 75 KB:
轉成 WebP 之後是 58 KB (-22.6%):
轉成 mp4 是 17 KB(-77.3%):
轉成 AVIF 是 11 KB(-85.3%):
看來最新的檔案格式還是滿厲害的,一下就小了超多。
The text was updated successfully, but these errors were encountered: