From 28b41cbc57e3081ff8e9a51b10ae87248738a271 Mon Sep 17 00:00:00 2001 From: zqlit Date: Sun, 24 May 2026 22:05:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/Ying/assets/js/modules/utils.js | 36 +++++--------------------- 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/themes/Ying/assets/js/modules/utils.js b/themes/Ying/assets/js/modules/utils.js index be88bb60..81756dbe 100644 --- a/themes/Ying/assets/js/modules/utils.js +++ b/themes/Ying/assets/js/modules/utils.js @@ -1,48 +1,24 @@ -// Scanner — page is blanked, beam paints the new theme back line by line +// Sheet reveal — new theme slides in, covering old theme like pulling a curtain function themeSweep(newTheme, callback) { var isH = Math.random() < 0.5; - var w = window.innerWidth, h = window.innerHeight; - // Blank overlay: covers entire page with new-theme's dominant color var blank = newTheme === 'dark' ? '#111827' : '#fcfaf5'; var sheet = document.createElement('div'); sheet.style.cssText = 'position:fixed;inset:0;z-index:9999;' + 'background:' + blank + ';' + - (isH - ? 'clip-path:inset(0 0 0 0);transition:clip-path 1.2s cubic-bezier(0.4,0,0.2,1);will-change:clip-path;' - : 'clip-path:inset(0 0 0 0);transition:clip-path 1.2s cubic-bezier(0.4,0,0.2,1);will-change:clip-path;'); + 'clip-path:inset(0 0 0 0);' + + 'transition:clip-path 1.2s cubic-bezier(0.4,0,0.2,1);' + + 'will-change:clip-path;'; document.body.appendChild(sheet); - // Thin scan beam at the leading edge - var beam = document.createElement('div'); - beam.style.cssText = - 'position:fixed;z-index:10000;pointer-events:none;' + - 'background:rgba(255,255,255,0.7);' + - 'box-shadow:0 0 4px 1px rgba(255,255,255,0.35),0 0 12px 2px rgba(255,255,255,0.12);' + - 'transition:transform 1.2s cubic-bezier(0.4,0,0.2,1);will-change:transform;' + - (isH - ? 'top:0;right:0;width:1px;height:100%;transform:translateX(0);' - : 'bottom:0;left:0;height:1px;width:100%;transform:translateY(0);'); - - document.body.appendChild(beam); sheet.offsetWidth; - - // Switch theme immediately — sheet covers it, beam reveals callback(); - if (isH) { - sheet.style.clipPath = 'inset(0 0 0 100%)'; - beam.style.transform = 'translateX(' + (-w) + 'px)'; - } else { - sheet.style.clipPath = 'inset(100% 0 0 0)'; - beam.style.transform = 'translateY(' + (-h) + 'px)'; - } + sheet.style.clipPath = isH ? 'inset(0 0 0 100%)' : 'inset(100% 0 0 0)'; - beam.addEventListener('transitionend', function(e) { - if (e.propertyName !== 'transform') return; + sheet.addEventListener('transitionend', function() { if (sheet.parentNode) sheet.parentNode.removeChild(sheet); - if (beam.parentNode) beam.parentNode.removeChild(beam); }); }