欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何在加載時強制圖像解碼?

江奕云1年前9瀏覽0評論

我正在建立一個網站,用requestAnimationFrame進行視差滾動。有多個部分,每個部分都有一個全尺寸的背景圖像和一些中間和前景圖像。我已經設法通過reques tAnimationFrame相對平滑地制作了這個動畫,但是在動畫中仍然有偶爾的抖動。

通過以幀模式觀看Chrome的時間軸,我可以看到導致“抖動”的進程被標記為“圖像解碼”。此外,一旦動畫完成一次,jank就不會重復出現。

似乎大多數瀏覽器現在都推遲了對還沒有看到的圖像的解碼。有沒有一種方法可以在用戶看不到的情況下預解碼(不僅僅是預加載)圖像?

該問題可能與圖像被滾出/滾入視圖有關。

來自http://creativejs.com/resources/requestanimationframe/

也有人暗示瀏覽器可以選擇優化 基于負載和元素可見性的requestAnimationFrame性能 (被滾出視圖)和電池狀態。

同樣來自W3C草案

問題4我們是否希望允許將元素傳遞給 requestAnimationFrame,以便影響給定元素的動畫 當滾動到視圖之外時被抑制或暫停。

確保沒有為每個onscroll事件啟動requestAnimationFrame循環,因為這可能會導致問題。這將在另一篇文章中詳細描述

關于請求動畫幀的問題

我通過刪除檢查一個元素是否在屏幕上的那行代碼解決了這個問題,這可能和瀏覽器做同樣的事情,只是效果不好。

您可以將圖像預解碼成一個數組

const img = new Image();
img.src = "bigImage.jpg";
img.decode().then(() => {
    images.push(img)
}).catch(() => {
    throw new Error('Could not load/decode big image.');
});

在這個例子中,作者請求解碼圖像元素。解碼意味著加載,之后是圖像的解碼。該調用返回一個承諾,當該承諾實現時,確保圖像可以被附加到DOM,而不會導致下一幀的解碼延遲。