From f91be983d4d6e90081aa91bc69ff7cf2cb50205e Mon Sep 17 00:00:00 2001 From: Vaica <94612053+zqlit@users.noreply.github.com> Date: Tue, 2 Jun 2026 10:16:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9B=BE=E7=89=87=E7=81=AF?= =?UTF-8?q?=E7=AE=B1=E7=9A=84=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- themes/Ying/assets/js/main.js | 46 +++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/themes/Ying/assets/js/main.js b/themes/Ying/assets/js/main.js index e7e0023c..0190525a 100644 --- a/themes/Ying/assets/js/main.js +++ b/themes/Ying/assets/js/main.js @@ -5,6 +5,52 @@ document.addEventListener('DOMContentLoaded', function() { ViewImage.init('.post-content img'); } + // 灯箱增强:滚动关闭 + fade scale 退回动画 + (function() { + var clickedImg = null; + + document.addEventListener('click', function(e) { + var img = e.target.closest('.post-content img'); + if (img) clickedImg = img; + }, true); + + function closeLightbox() { + var lb = document.querySelector('.view-image'); + if (!lb) return; + + // 用 UIkit 内置动画关闭 + if (window.UIkit && UIkit.animate) { + UIkit.animate(lb, 'uk-animation-fade uk-animation-fast'); + setTimeout(function() { lb.remove(); }, 300); + } else { + lb.classList.add('view-image__out'); + setTimeout(function() { lb.remove(); }, 290); + } + } + + // 拦截关闭按钮 + document.addEventListener('click', function(e) { + var lb = e.target.closest('.view-image'); + if (!lb) return; + var isClose = e.target.closest('.view-image-close') || e.target.closest('.view-image-close__full'); + if (!isClose) return; + e.stopPropagation(); + e.preventDefault(); + closeLightbox(); + }, true); + + // 滚动关闭 + var lastScrollY = window.scrollY; + window.addEventListener('scroll', function() { + var lb = document.querySelector('.view-image'); + if (!lb) { lastScrollY = window.scrollY; return; } + if (Math.abs(window.scrollY - lastScrollY) > 15) { + lastScrollY = window.scrollY; + closeLightbox(); + } + }, { passive: true }); + })(); + // 文章图片懒加载 (优先初始化,防止其他模块调用时出错) if (typeof lazyLoadInit === 'function') { lazyLoadInit({