From b8cc5ab48378581c9c0edbef30068ef98c87ae93 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Tue, 29 Sep 2026 23:13:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=B9=95=E5=B8=83):=20GVSDS=20=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=8C=89=E5=AD=97=E5=BD=A2=E7=AC=94=E7=94=BB=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=BB=98=E5=88=B6=20+=20=E4=B8=80=E5=88=92=E5=88=B0?= =?UTF-8?q?=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 幕布字改为 SVG:每个字母一个 ,用 stroke-dasharray/dashoffset 沿 --font-sans 字形轮廓同时起笔,画完补实心 - 轮廓长度用 getComputedTextLength() * 4.2 估算(getTotalLength 不作用于 ),viewBox 按实测 bbox 设 - 幕布露出 60% 时起笔,只画一次;prefers-reduced-motion 下直接显示 - 距底不足 0.6 屏时,下一次向下滑动(滚轮/触屏)由 Lenis 平滑滑到底 - App.vue 用 provide 下发 Lenis 实例,避免与 window.scrollTo 抢滚动 --- src/App.vue | 16 +-- src/layouts/SiteLayout.vue | 201 ++++++++++++++++++++++++++++++++++--- 2 files changed, 197 insertions(+), 20 deletions(-) diff --git a/src/App.vue b/src/App.vue index 40a4e8e..714550a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -4,12 +4,16 @@ diff --git a/src/layouts/SiteLayout.vue b/src/layouts/SiteLayout.vue index 54cacf6..9853b38 100644 --- a/src/layouts/SiteLayout.vue +++ b/src/layouts/SiteLayout.vue @@ -187,20 +187,38 @@ - + 幕布就永远看不见了。两者放在内容层之外,否则会被内容层的层叠上下文与白底吃掉。 + + 字形不是普通文字,而是 SVG:幕布先是纯蓝背景,露出六成之后五个字母同时起笔, + 沿着 --font-sans 的字形轮廓把笔画一段段"写"出来,写完再补上实心。 + 每个字母一个独立 :同一元素内 stroke-dasharray 会跨字形连着走, + 拆开才能五个字同时起笔。轮廓长度由 JS 估算后写进 --dash(见 setupCurtain)。 --> - +