From 197a5f0cd60eaa1864eccc215e44ecf559a7bbfd Mon Sep 17 00:00:00 2001 From: mole404 <248403041+mole404@users.noreply.github.com> Date: Fri, 2 Oct 2026 21:17:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(viewer):=20=E6=A1=8C=E9=9D=A2=20110%=20?= =?UTF-8?q?=E7=BC=A9=E6=94=BE=E4=B8=8B=E7=9C=8B=E5=9B=BE=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E5=8F=B3=E5=81=8F=20+=20=E9=81=AE=E7=BD=A9?= =?UTF-8?q?=E7=9B=96=E4=B8=8D=E6=BB=A1=E5=B1=8F=E5=B9=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 真因(真 Chromium 实测,1280×577 / html{zoom:1.1}): - 布局空间只有屏幕的 1/1.1(1280 屏 → 布局 1164)。Viewer 按「视觉屏幕宽 1280」算居中, 算出的 margin-left 被当【布局值】写进内联样式 ⇒ 渲染时又 ×1.1 ⇒ 图片整体右偏 (1280 − 1280/1.1)/2 ≈ 58 布局 px(渲染 64px)。实测左右留白 360.1 / 232.1(差 +128)。 - 看图外壳(.viewer-container,fixed + inset:0)在 zoom 下只铺到屏幕的 90.9% (1163.6×524.5),右侧/底部约 116×52px 的遮罩盖不住。 修法: - blade:点开图后约 4s 内持续按【布局单位】重算大图 margin(幂等;z=1 的手机端直接跳过; 带「整图适配」护栏,不干扰用户自己的放大/平移)。不用 Viewer 的事件 API —— 内置的 viewer.min.js 是压缩产物、实例上没有可用的 .on()(用了会让整段脚本报错)。 - common.less:外壳改 width/height:100%(实测渲染出来正好铺满屏幕;不能用 100vw, zoom 下它会渲染成 1408 即溢出 10%)。 真机验收(生产库只读副本 + 一次性容器 + Chromium): - 左右留白 296.4 / 295.8(差 +0.6)✓ 上下 51.5 / 51.3(差 +0.2)✓ - 容器与遮罩 = 1280×577 = 正好一屏 ✓ - 手机档 390 宽:z=1,代码自动跳过,左右 19.5/19.5(差 0.0,与原样一致)✓ - jsdom 9 套件 409 项全绿 ✓ 无 JS 报错 ✓ --- Dockerfile | 4 ++-- patches/ios-longpress.patch | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index ff47455..4bbef6e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -165,7 +165,7 @@ RUN php -r "file_exists('.env') || copy('.env.example', '.env');" \ RUN printf '%s\n' \ 'c0e513ec8e93fd81b34b3c6de5cf5eb8 ./public/js/context-js/context-js.js' \ 'c0e513ec8e93fd81b34b3c6de5cf5eb8 ./resources/js/context-js.js' \ - '23835058801c2b609c2134f0f10d0a5d ./resources/views/user/images.blade.php' \ + 'df7fe2e34526513b55bb9286b59254be ./resources/views/user/images.blade.php' \ | md5sum -c - \ && grep -q "assetVersion('js/context-js/context-js.js')" ./resources/views/user/images.blade.php \ && grep -q 'isIOSWebKit' ./public/js/context-js/context-js.js \ @@ -208,7 +208,7 @@ RUN APP_SRC_MD5=$(find app config routes -type f -print0 2>/dev/null | sort -z | "fork_sha=${FORK_SHA}" \ "lsky_commit=${LSKY_COMMIT}" \ "context_js_md5=c0e513ec8e93fd81b34b3c6de5cf5eb8" \ - "images_blade_md5=23835058801c2b609c2134f0f10d0a5d" \ + "images_blade_md5=df7fe2e34526513b55bb9286b59254be" \ "app_src_md5=${APP_SRC_MD5}" \ "app_js_md5=${APP_JS_MD5}" \ "app_css_md5=${APP_CSS_MD5}" \ diff --git a/patches/ios-longpress.patch b/patches/ios-longpress.patch index e06da16..3f2be03 100644 --- a/patches/ios-longpress.patch +++ b/patches/ios-longpress.patch @@ -52,7 +52,7 @@ # 三个文件各自的 md5(与 Dockerfile「自证 2」里的期望值一致): # c0e513ec8e93fd81b34b3c6de5cf5eb8 src/resources/js/context-js.js # c0e513ec8e93fd81b34b3c6de5cf5eb8 src/public/js/context-js/context-js.js -# 23835058801c2b609c2134f0f10d0a5d src/resources/views/user/images.blade.php +# df7fe2e34526513b55bb9286b59254be src/resources/views/user/images.blade.php # # 上游原文件 md5(改动前,供比对): # c8e57f6232848ca8277341ddf1a3a7a6 resources/js/context-js.js