diff --git a/src/player.js b/src/player.js index b67c2bf..1d5e680 100644 --- a/src/player.js +++ b/src/player.js @@ -68,9 +68,12 @@ function _crossfadeNpBg(cv) { const nextEl = document.getElementById(`np-bg-${nextId}`); if (!currEl || !nextEl) return; nextEl.style.backgroundImage = cv ? `url('${cv}')` : 'none'; - nextEl.style.opacity = '1'; - currEl.style.opacity = '0'; - _npBgCurr = nextId; + // Double rAF: wait for browser to paint the new bg (GPU decode) before fading + requestAnimationFrame(() => requestAnimationFrame(() => { + nextEl.style.opacity = '1'; + currEl.style.opacity = '0'; + _npBgCurr = nextId; + })); }; if (!cv) { doFade(); return; } const img = new Image(); diff --git a/styles.css b/styles.css index 844c881..79f89f3 100644 --- a/styles.css +++ b/styles.css @@ -515,6 +515,7 @@ nav{flex:1;overflow-y:auto;padding:4px 10px} filter:blur(60px) brightness(.35) saturate(1.4); transform:scale(1.1); transition:opacity .55s ease; + will-change:opacity; z-index:0; }