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) {
|
function _crossfadeNpBg(cv) {
|
||||||
if ((cv || '') === _npBgLastUrl) return;
|
if ((cv || '') === _npBgLastUrl) return;
|
||||||
_npBgLastUrl = cv || '';
|
_npBgLastUrl = cv || '';
|
||||||
const currEl = document.getElementById(`np-bg-${_npBgCurr}`);
|
const doFade = () => {
|
||||||
const nextId = _npBgCurr === 'a' ? 'b' : 'a';
|
const currEl = document.getElementById(`np-bg-${_npBgCurr}`);
|
||||||
const nextEl = document.getElementById(`np-bg-${nextId}`);
|
const nextId = _npBgCurr === 'a' ? 'b' : 'a';
|
||||||
if (!currEl || !nextEl) return;
|
const nextEl = document.getElementById(`np-bg-${nextId}`);
|
||||||
nextEl.style.backgroundImage = cv ? `url('${cv}')` : 'none';
|
if (!currEl || !nextEl) return;
|
||||||
nextEl.style.opacity = '1';
|
nextEl.style.backgroundImage = cv ? `url('${cv}')` : 'none';
|
||||||
currEl.style.opacity = '0';
|
nextEl.style.opacity = '1';
|
||||||
_npBgCurr = nextId;
|
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) {
|
export function _syncNpDirect(s) {
|
||||||
|
|||||||
Reference in new issue
Block a user