fix: preload bg image before crossfade to eliminate black flash
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
e0a518fa13
commit
af0c2d6eb2
1 file changed
+15
-8
+15
-8
@@ -62,14 +62,21 @@ let _npBgLastUrl = '';
|
||||
function _crossfadeNpBg(cv) {
|
||||
if ((cv || '') === _npBgLastUrl) return;
|
||||
_npBgLastUrl = cv || '';
|
||||
const currEl = document.getElementById(`np-bg-${_npBgCurr}`);
|
||||
const nextId = _npBgCurr === 'a' ? 'b' : 'a';
|
||||
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;
|
||||
const doFade = () => {
|
||||
const currEl = document.getElementById(`np-bg-${_npBgCurr}`);
|
||||
const nextId = _npBgCurr === 'a' ? 'b' : 'a';
|
||||
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;
|
||||
};
|
||||
if (!cv) { doFade(); return; }
|
||||
const img = new Image();
|
||||
img.onload = doFade;
|
||||
img.onerror = doFade;
|
||||
img.src = cv;
|
||||
}
|
||||
|
||||
export function _syncNpDirect(s) {
|
||||
|
||||
Reference in new issue
Block a user