The Renaissance
Edition拆解

这不是观感笔记。以下每一个色值、缓动、时长、着色器公式,都来自 shopify.com/editions/winter2026 的计算样式、样式表原文、三十个 JS chunk 与十三份 Theatre.js 状态文件的直接抽取。

Hydrogen + Oxygen实锤 · powered-by 头 Awwwards SOTD + 月度站 · CSSDA WOTD实锤 Theatre.js 驱动 13 个 WebGL 场景实锤 react-three-fiber实锤 Tailwind v4.2.2实锤 Lenis 1.3.23实锤 Rive 矢量动画实锤 --ease-back .34,1.56,.64,1实锤 十二章 200 张产品卡实锤 detect-gpu 四档画质实锤
首屏真实渲染:两位文艺复兴人物以创世纪构图相触,手持亮粉咖啡杯与购物袋
as-seen:1440×900 @1.5x 真实渲染。创世纪构图的两位少年,一手咖啡一手购物袋,粉色滑板穿场而过——正典构图,异端道具。
II定位与设计意图营销层,半年一届的橱窗

Editions 是 Shopify 每半年一次的产品发布会网站,每一届自造一个世界观。这一届的世界观写在标题的字缝里:标题 SVG 把「ai」两个字母独立成组、改花体斜体、单独滑入(实锤:title__word--ai 组 + 独立 slide 动画)——官方文案只说「现代时代的文艺复兴」,把双关留给看得见的人(AI 释义为推断,置信高)。

三层设计意图(推断,证据充分)

意图证据
正典与异端的拼贴:文艺复兴油画世界里插入滑板、咖啡杯、购物袋、紫色眼罩、亮粉毛线帽hero 美术、Sidekick 章肖像、#beanie 彩蛋(均实锤存在)
把「作坊」搬进页面:达·芬奇构造线、黄金分割、罗马数字、花体首字,全部用工程手段实现而非贴图SVG pathLength 描线、CSS counter 罗马数字、ImperialScript 首字下沉(样式表实锤)
自证产品力:页面本身就是一家 Shopify 店——帽子用真实 variant 走真实 cart 链接结账storeURL/cart/variantId:quantity(JS 原文实锤)

营销层 vs 产品层

这站是纯营销层:Hydrogen(Remix)+ Oxygen 边缘托管,内容从 CMS 下发(连 Theatre.js 动画时间轴都是 CMS 资产)。它不承载产品功能,唯一的「产品」是那顶 $14.52 的毛线帽——而这恰是全站最锋利的一句自我介绍:发布会网站本身就是一家可结账的 Shopify 商店。

资产层证据的一处妙笔:某场景背景的文件名残留了 AI 生成提示词——「painting of forest and flowers by Sandro Botticelli」(生成者用户名已略去)。「Renaissance」不只是文案双关:这届的文艺复兴美术本身就有 AI 参与绘制,标题与工艺互为注脚。(实锤:manifest 文件名)

外部视角(全部带来源,清单见文档)

事实出处
2025-12-10 发布,官方口径「over 150 launches」;产品副总裁公开信解释文艺复兴主题:进步、势能、勇气与新开端shopify.com/news 两篇官方文
Awwwards Site of the Day(2026-02-09,总分 7.92)+ Developer Award(动效与过渡子项 9.40,全项最高)+ 当月 Site of the Monthawwwards.com/sites/the-renaissance-edition
CSSDA Website of the Day(终审 8.71:UI 8.73 / UX 8.63 / 创新 8.76)cssdesignawards.com
Shopify 内部创意团队制作(Awwwards 提交方为 Shopify Design;上届幕后文自述设计、开发、动效、内容全内部,近四届均为 Hydrogen 店铺)官方幕后文 + Awwwards 署名
webgpu.com 收录并评为「半画廊半技术演示」:滚动驱动的辉光、折射着色器与体积云webgpu.com/showcase

Editions 世界观年表(官方归档页,一年两届「Every six months」):Summer '22 Connect to Consumer → Winter '23 Built to Last → Summer '23 Imagine My Business → Winter '24 Foundations(Awwwards HM)→ Summer '24 Unified(SOTD)→ Winter '25 Boring(刻意无聊的极简站 + CRT 彩蛋宇宙)→ Summer '25 Horizons(内置浏览器赛车游戏)→ Winter '26 Renaissance(本届)→ Spring '26 Everywhere(点云体积光,官方在 Codrops 发工程复盘)。

本拆解的两个独家核验:控制台字符画的花体大字实为拉丁文 「clavis reserat」(钥匙开启)——对应隐藏路由 /editions/winter2026/key(HTTP 200,注入 three@0.159 import map 的独立彩蛋场景);URL 追加 ?theatre 参数会动态加载 Theatre.js Studio 编辑器(发布版里留着创作后门)。公开网络上尚无人记录这两处。
III色彩系统羊皮纸与橄榄墨

双主角:暖纸 #f7f7ee 与橄榄近黑 #292919(词频并列第一,各 23 处)。灰阶带橄榄底色而非中性灰——纸张氧化的颜色。唯一的品牌强调是 Sidekick 紫;亮粉只存在于画作里,CSS 里一处都没有。

暖纸底#f7f7ee实锤 · bg-light,词频 23
橄榄墨#292919实锤 · bg-dark,词频 23
羊皮灰 · 幕布#dcdcd0实锤 · 章节擦除幕布默认色
纸灰 · 导航#e2e2d9实锤 · light 态移动导航底
石墨橄榄#909083实锤 · light 态构造线色
正文链接#5c5c4e实锤 · bodycopy 链接色
Sidekick 紫#8051ff实锤 · 唯一品牌强调
眼罩紫#7126ff实锤 · 吉祥物 SVG 面罩填充
湿壁画天蓝#57afdf实锤 · 词频第 8
蝶翼辉光#88DDFF实锤 · uGlowColor 8969727
星座连线#D7D7CF实锤 · 技能连线 stroke
工作蓝#155dfc实锤 · 词频 2 处
主题机制(实锤):全站明暗由三个 html 属性驱动——data-nav-themedata-sidebar-themedata-title-theme,各有独立阈值,由 WebGL 幕布位置实时计算(见第 VI 章)。light 态时 body 直接落在幕布同色 #dcdcd0 上,网页背景与 WebGL 画面无缝相接。
IV字体系统四支真字体已本地接入

三角关系:怪诞体标题(Neue Montreal,商业字体)、衬线叙事(HWCigars,家族名实锤,风格近 Times 展示切)、花体点睛(Imperial Script)。第四支 Inter Variable 只服务全局导航。正文竟然全部用 700 字重——小号加粗,是这站排版最反直觉的决定。

NeueMontreal700 · woff2 24,792 Bheadline-1..6 与 bodycopy商业字体:仅内部研究
A new world of commerce.
headline-1: 72px → clamp(7.5rem, 35.79px + 10.965vw, 13.75rem)(220px!)lh .9 · ls −.03emtext-box: trim-both cap alphabetic
HWCigars400 · woff2 30,440 Bnarrative-1..4 · 章节导语与小字feature: liga dlig kern smcp c2sc case
The AI-powered Shopify expert who's just as obsessed with your business as you are.
narrative-1: 28px → clamp(2rem, 18.53px + 1.754vw, 3rem)lh .96 · ls −.05em
ImperialScript400 · woff2 15,572 B首字下沉与 script-1
Beanie
drop-cap 首字: 70px → clamp(6rem, 75.79px + 2.63vw, 7.5rem) · merch 版最大 10remline-height 0 悬浮制
Inter Variable100–900 · woff2 67,188 B仅全局导航与站内搜索
Editions · Search · Start for free
层级字族移动端桌面 clamp行高 / 字距
headline-1NeueMontreal 70072px120→220px(10.965vw).9 / −.03em
headline-2NeueMontreal 70064px100→140px.9 / −.03em
headline-3NeueMontreal 70054px54→64px.9 / −.02em
headline-4/5/6NeueMontreal 70032 / 24 / 18px固定.95 / −.02~.03em
narrative-1/2/3/4HWCigars 40028 / 24 / 20 / 12px32→48 / 25→29 / 20 / 12px.96–1.07 / −.04~.05em
bodycopy-1/2NeueMontreal 70016 / 14px14 / 11px(桌面更小)1.1
script-1 / drop-capImperialScript 40070px96→120px.96 / −.02em
前沿细节(实锤):每一级都声明 text-box: trim-both cap alphabetic——2024 年落地的 leading-trim 标准,把字框上下的空白裁到大写高度与基线,使 .9 的行高不糊排。全站是这个新特性目前最大规模的生产使用之一。日语环境自动放弃花体与衬线(:lang(ja) 覆写),德语标题降一档字号防爆行。
V布局与滚动一比四的手稿页

栅格(实锤)

总容器max-width 105rem(1680px),container-type: inline-size
左侧手稿框固定 1/5 宽 · aspect 340/464 · min(340px, 100vw−24px)
内容列右侧 4/5 · 12 列 · gap clamp(12px,1vw,16px)
断点599 / 768 / 939 / 940 / 1181px · global-lg=58.75rem(940)
章节 heromin-height 70svh,桌面 140svh(双拍)
产品卡列宽numberOfColumns 12/6/4/3 → col-span 映射

Lenis(原文实锤)

new Lenis({
  duration: 1,
  easing: t => Math.min(1, 1.001 - Math.pow(2, -10 * t)), // easeOutExpo
  orientation: "vertical",
  smoothWheel: true,
  wheelMultiplier: 1
})  // 仅桌面;移动端原生滚动 + 场景端 0.5 lerp 平滑

分区进度机(JS 原文实锤)

每章是一个进度区间。区间长 = 章高 + 视口高;从第三章起提前 20% 视口开始交叉(earlyCrossfade: .2)。进度写进 zustand,再由每章的 Theatre.js sheet 消费:

sequencePosition = progress × (sectionH + vh) / vh
// 每章时间轴长度 10;hero 开场另加 −1→0 的 5s 序曲

导航明暗阈值(实锤)

信号切 light 的窗口
倒数第二章 transitionProgresssidebar ≥.4 · title ≥.7 · nav ≥.75
finalOverlayPositionsidebar [−.85,.15] · title [−.3,.7] · nav [−.25,.75]
切换瞬间data-*-immediate 骨架帧禁过渡
性能纪律(实锤):每章内容区挂载 500ms 后追加 content-visibility:auto + contain-intrinsic-size;产品卡视频退出视口即移除 <source>load() 释放解码器;Rive 进视口 300/600ms 后才实例化。五万像素高的页面就是这样保持顺滑的。
VIWebGL 舞台与 Theatre.js十三份时间轴,全部来自 CMS

这站最被低估的事实:所有 WebGL 编排不写在代码里。十三份 Theatre.js 工程状态 JSON(Hero + 十二章)作为 CMS 资产下发,设计师在 Theatre 编辑器里排好相机、资产层、辉光、幕布的关键帧,前端只做一件事——把滚动进度写进 sequence.position

HeroScene.theatre-project-state_15.json已落盘 SidekickScene state_14已落盘 CheckoutScene state_13已落盘 objects: cube / asset-1..3 / camera / landscape / bloom / effects / particles / butterflies

场景构成(实锤)

画面多层图像平面(bg diffuse KTX2 + 每章 desktop.ktx2 资产层),非全 3D——「多平面立体书」
相机fov 10–120 可编排 · freeOrbit 态锁 fov 90 · gaze 指针注视 0–1
灯光light-1 红 light-2 蓝(补色打底),环境贴图 studio_small_09 PMREM KTX2
辉光bloom 默认 luminanceThreshold .9 / smoothing .025 / radius .85;Theatre 轨道量程 0–100,默认 8
幕布overlay position −1→1(含 mobilePosition 独立轨),颜色默认 #dcdcd0;darken 0–1;fadeCenter xyz ±10
纹理管线KTX2 流式解码:读满 80 字节即解析头,ZSTD wasm + worker 池边下边播

画质分级(JS 原文实锤)

detect-gpu →
  tier 0            → fallback(静态图版)
  tier 1 / 2 / 3    → low / medium / high
  移动端默认        → fallback(可 forceWebGL)
  运行时降级链      → high → medium → low

Hero 开场序曲(实锤)

加载完成 + 无 hash + scrollY<100
→ 延迟 100ms,5000ms 内
   offset = −1 + (1 − (1−t)³)   // cubic ease-out
→ sequence.position 从「负一个视口」推进到 0

这就是首屏那记缓慢的「入画」运镜。跳章直达或已滚动时直接置 0,绝不强迫看片头。

蝴蝶——会呼吸的实例化群(着色器原文实锤)

float flapSpeed = 4.0 + rand.y * 4.0;
float flapAmp   = 0.8 + rand.z * 0.5;
float t = uTime * 1.2 * flapSpeed + rand.x * 6.28;
float wave = sin(t)
           + sin(t * 2.1 + rand.w * 3.14) * 0.2
           + sin(t * 0.37 + rand.z * 5.0) * 0.3;  // 三层叠波
float wingBlend = smoothstep(0.02, 0.4, abs(pos.x)); // 身体不动翅膀动
float asym = 1.0 + sign(pos.x) * sin(t*0.7 + rand.w*6.28) * 0.08;
pos.y += smoothstep(1.0, -0.5, wave) * 0.25;  // 落翼时抬升
数量上限50 只(Kt=50)
几何与贴图rest.json(顶点/UV/索引)+ butterfly2_256.ktx2 · 均已落盘
出生分布半径 ≤4 的圆环 · y=(rand−.5)×2+.5 · z −5 偏移
颜色逐实例 HSL 色相偏移(uHue + rand×.05)
辉光边缘 #88DDFF × pulse(sin 3t×.3+.7),最终 pow(color,1.5)
体型uScale .08 × (0.8 + rand×0.4)

三层不同频率的正弦叠加 + 左右翅 8% 不对称 + 拍翅反作用力的身体起伏——没有一只蝴蝶的振翅相同。第 VII 章有可跑复现。

VII签名实验室七台装置,全部原值
装置一 · 达·芬奇构造线剧场SVG pathLength=1 · 描线 3s cubic-bezier(.34,.22,.47,.84) · 首亮 4s 闪烁衰减
The
Renaissance
Edition
原站的每一章激活一组构造线(章→组映射实锤:hero→7、Sidekick→6、Agentic→6、Online→5、Retail→4、Marketing→3、Checkout→2、Operations→1、Shop app→8、B2B→7、Finance→6、Shipping→5、Developer→4)。三段折线是黄金螺旋的方形化——台阶长 80.25 → 49.04 → 30.65,相邻比 1.636、1.600 ≈ φ。首次点亮的组以 4s 从亮白闪至 15% 低语态;加载期外框先 6s 描到 80%,资源就绪后 1s 收口。
装置二 · 蝴蝶扑翼公式三层正弦叠波 · wingBlend smoothstep(.02,.4) · 原值直搬
画布 2D 复现顶点着色器的翅膀数学:每只蝴蝶四个随机数决定频率(4–8)、振幅(0.8–1.3)、相位与不对称度;wave = sin(t) + 0.2·sin(2.1t+φ) + 0.3·sin(0.37t+φ');身体在落翼时上浮 smoothstep(1,−.5,wave)×0.25。边缘辉光取原站 uGlowColor #88DDFF。几何为示意简化,公式与参数为实锤原值。
装置三 · 技能星座(邻近物理 + SSE 计数)scale 2.1→0.7@400px · 斥力 80 · 连线 #D7D7CF · 弹窗 grid-rows 0fr→1fr
指针是引力中心:距离 0 处标签放大到 2.1 倍、不透明度 1;400px 外缩到 0.7、0.4。标签之间有 80 强度的斥力与标签盒碰撞规避;连线按「每 120° 扇区取最近邻」生成,端点带 300ms ease-out 过渡。点击开合弹窗——grid-template-rows 0fr→1fr,300ms 回弹曲线,延迟 50ms。原站的计数徽章由 EventSource 直播全网 Sidekick 技能实时使用数(本 demo 以定时增量模拟;计数上升动画为原值:1s 三次方缓出)。
装置四 · 罗马数字商店CSS counter upper-roman · 悬停价格翻转 .3s ease-in-out
Renaissance Person
Beanie
Subtotal · 悬停看罗马数字
$14.52USD
$.USD
原站彩蛋原样复现:数量以 counter(quantity, upper-roman) 显示;价格悬停时整行上翻,露出罗马数字写法的美元金额(dollars 与 cents 各一个 counter)。$14.52 是那顶帽子的真实定价——XIV.LII。深链 #beanie 会滚到 Checkout 章并打开真实可结账的弹窗。
装置五 · 羊皮纸幕布(Theatre 轨道模拟)overlay.position −1→1 · 颜色 #dcdcd0 · darken 0→1
Retail 章 WebGL 场景
position −1.00 darken 联动 |pos|→0 区间
章节之间的「翻页」不是 DOM 过渡:Theatre 时间轴驱动一块 #dcdcd0 的全屏幕布从 −1(画面外)推到 1(盖满再离场),同轨还有 darken 压暗与 fadeCenter 径向衰减中心。移动端有独立的 mobilePosition 轨道。light 主题的切换窗口(第 V 章的表)就挂在这个值上。
装置六 · Theatre 状态回放(HeroScene 真轨道)state_15.json · 10 objects / 33 tracks / 87 keyframes · 逐帧贝塞尔求值
position 0.00 / 10
value 0
cube ← position/rotation 轨 · 辉光 ← bloom 轨 · 尘埃 ← particles.opacity
sequence.position = 滚动进度 × (章高+vh)/vh —— 原站把这条时间轴挂在滚轮上
这不是模拟:右侧数据是 manual_HeroScene.theatre-project-state_15.json 的全部 32 条有效轨道(含贝塞尔手柄原值),求值方式与 Theatre 相同——相邻关键帧间做 cubic-bezier(左帧右手柄, 右帧左手柄) 缓动。曲线板里能看见 hero 序章的全部编排:相机 z 从 −18.57 冲到 6.45 再退到 −2.29、landscape 的 KTX2 帧序列 0→124、bloom 在 1.767–2.233 处的尖峰 4→1、粒子透明度四段折线。选一条轨道看它的真实曲线。
装置七 · 蝴蝶标本(rest.json 真几何 + 折翼着色器原文)2,589 顶点 / 3,616 三角 · 三层叠波 + wingBlend smoothstep(.02,.4) · ±8% 不对称
REST.JSON — 原站蝴蝶网格 · 辉光 #88DDFF(= 8969727,实锤换算)
wave = sin(t) + 0.2·sin(2.1t+φw·π) + 0.3·sin(0.37t+φz·5) · flapSpeed 4–8 · flapAmp 0.8–1.3 · bob smoothstep(1,−.5,wave)×0.25
几何来自已落盘的 manual_rest.json(position/normal/uv/index 全套,2,589 顶点);顶点着色器为 Butterflies chunk 原文——三层叠波驱动 |x| 方向的翼面绕体轴折叠,左右翼相位差 ±8%。原站以 50 只 instancedMesh + KTX2 翼面贴图 + PMREM 环境铺满 hero;此处单只标本、以法线明暗替代贴图(KTX2/UASTC 需 wasm 转码器,属体裁取舍),边缘辉光公式与脉动为原值。
VIII逐屏走查十四幕 · 全部真实渲染截图

十二章共 200 张产品卡(Sidekick 20 · Agentic 2 · Online 23 · Retail 17 · Marketing 13 · Checkout 10 · Operations 22 · Shop app 6 · B2B 14 · Finance 12 · Shipping 7 · Developer 54,按 HTML article 计数,实锤)。每章结构一律:WebGL hero(70svh,桌面 140svh 双拍)→ 花体首字导语 → 白纸内容区。

Hero 开场Hero 滚动反相

Hero · 创世纪与星夜蚀刻

"A new world of commerce. 150+ product updates."

加载框先行(6s 描边到 80%),随后 5 秒序曲运镜入画。滚动离场时整幅油画反相成星夜蚀刻——白昼与黑夜、油画与底稿的显影切换,是 Theatre 时间轴上 effects 轨的杰作。十二章目录悬浮画中,罗马数字由 CSS counter 生成。

hero 高 150svh,translate −100%目录 hover 3s 自动消焦蝴蝶与粒子常驻
Sidekick 章 hero技能星座交互态

ISidekick · 紫眼罩肖像与技能星座

"The AI-powered Shopify expert who's just as obsessed with your business as you are."

本章 20 卡是全站交互密度之最:SMIL 动画的吉祥物脸(悬停才眨眼,3.34s 循环)、EventSource 直播的技能使用计数、emoji 升腾(确定性伪随机 sin(i·12.9898+s·78.233)·43758.5453——把 GLSL 经典 hash 搬进 JS)、移动端触觉反馈 navigator.vibrate(10)、Apps 卡云的指针斥力视差。还有一个隐藏按钮:下载 emoji 包 zip。

技能标签 jitter ±10px 确定性随机弹窗按象限翻转 --popup-*Esc 全局关闭卡片 intro:WAAPI scale .5→1 回弹,随机延迟 0–800ms
Agentic 章 heroAgentic hero 第二拍

IIAgentic · 窗景与流线画布

"Sell directly in AI chats with built-in tools that syndicate your products to every AI platform."

仅 2 卡的短章,讲「在 ChatGPT 里直接卖货」。XXL 卡带 Canvas 2D 流线装置:60 条三段贝塞尔管道、每条 3 颗粒子,喉部提速 3.5 倍、缘部 0.3 倍——商品数据穿过「AI 咽喉」的隐喻。由 Rive 事件 showCanvas/hideCanvas 开关。

LINE_COUNT 60 · 粒子半径 1 · 线宽 .3 · 透明度 .51端点抖动 ±1.5px速度斜坡 3.2
Online 章 heroRollouts 特色卡

IIIOnline · 建站与 23 卡长章

"Validate store changes with A/B testing and an AI tool that simulates shopping behavior."

Rollouts、SimGym(AI 模拟购物行为)、Tinker——三张注册表特色卡都在本章。Rollouts 卡另配流线画布第二处实例。产品卡媒体优先级链(实锤):customVideo > Rive > video > image,四级响应式视频源矩阵(mov/webm/mp4 × 1x/2x × 桌面/移动 = 12 路 source)。

23 卡全站第二长SimGym 卡:sticky 讲解列
Retail 章 heroRetail hero 第二拍

IVRetail · POS Hub 硬件陈列

"New in-store hardware that provides unwavering reliability."

17 卡讲线下硬件。hero 的 140svh 双拍在此最典型:第一拍全景油画,第二拍相机推近资产层(Theatre camera 轨),文字换场。

place-content-end 布局变体RetailScene state 文件名带 cs-251209v2 版本号
Marketing 章 heroProduct Network 特色卡

VMarketing · 产品网络

"Grow your sales with a first-of-its-kind product network."

13 卡。特色卡「Shopify Product Network」以 25vh 的 sticky 空间陈述——跨店商品分发网络,是本届最重的商业发布之一。

md:mt-[25vh] 呼吸位headline-3! 强制层级
Checkout 章 heroBeanie 购买弹窗与 Sobel 素描场景

VICheckout · 帽子与素描结账

"Convert customers with personalized checkout experiences and more payment options."

全站王牌彩蛋。打开购买弹窗的瞬间,WebGL 场景切换 Sobel 边缘检测——整幅油画退成 [.995,.995,.933] 底色的铅笔素描,唯有那顶实拍的亮粉毛线帽保持彩色。挂真实 Shopify variant,cart/{variantId}:{qty} 直达结账;数量与悬停价格全部罗马数字。弹窗开场 800ms、收场 500ms,其间全站主题翻 light。

#beanie 深链自动滚章开窗hatHoverIntensity 指针轨free shipping 猎豹版画图标"All sales are final"
Operations 章 heroOperations 白纸内容区

VIIOperations · 白纸区的标准形态

"Improve everyday workflows with flexible inventory modeling and trend-spotting analytics."

22 卡。右图是全站内容区的标准解剖:白纸底、12 列栅格、卡片容器查询(@container 480/576px 两档内容宽),文字列表区铺 400px 平铺纸纹。

texture-src-90.jpg 纸纹实锤col-span 12/6/4/3 映射
Shop app 章 heroB2B 章 hero

VIII–IXShop app · B2B

"Reach millions of high-intent shoppers…" · "Take your wholesale business global…"

Shop app 6 卡(全站最短)与 B2B 14 卡。两章 hero 布局变体相反:前者 place-content-end + 30vh 標題底距,后者 27vh 顶距——同一套系统在 Ds 映射表里逐章微调(实锤)。

global-lg:pb-[30vh] / pt-[27vh]
Finance 章 heroShipping 章 hero

X–XIFinance · Shipping

"Modern financial tools designed for growing your business and getting that coin." · "Ship confidently and cheetah-fast…"

12 卡与 7 卡。文案口吻在此彻底放飞(getting that coin / cheetah-fast),与油画的庄重形成反差——整站的语调策略:画面越古典,文字越街头。

finance 标题顶距 35vh 全站最深
Developer 章 hero页尾

XIIDeveloper · 54 卡的终章

"A completely new way to build for commerce with the power of AI."

54 卡,占全站四分之一强——这届 Editions 把最大的篇幅给了开发者(.dev dash、Agents、Checkout Kit、MCP)。终章之后页面收在暖纸色页尾。Developer 章列表区独享无纹理处理(isListTextured=false,实锤)。

54 卡全站最长末卡 pb-64 特判
IX隐藏章 · 钥匙clavis reserat——钥匙开启它

控制台的花体拉丁文只是请柬。真正的彩蛋是一台双窗口 WebGL 装置:Shipping 章的猎豹鞍带上挂着一把金钥匙(three.js 场景内可点击、悬停自旋 2π/600ms),点击后 window.open 弹出一扇 4:3 的小窗——宽 = min(vw,vh)×0.53×4/3,以点击点为中心,窗名 ripple_popup,加载独立路由 /editions/winter2026/key(three@0.159 + 92KB 专属 bundle popup.min)。这扇小窗不是页面,是一支透镜

五幕剧 · 无头双窗实录Playwright 双页联动 · WebRTC 真握手(video readyState 4)· 全部截图为真实渲染
主窗口 Shipping 章:猎豹鞍带上的金锁 弹窗:金钥匙 + 锁孔 + boid 彩带 + 紫光灯画面 弹窗:钥匙插入位 弹窗:涂鸦模式启动 弹窗:hero 章 Bayer 抖动 + 金滑板 弹窗:marketing 章水面折射
第一幕·主窗口把自己的 WebGL 画布 captureStream(60)(≤5Mbps、每 16ms requestFrame),经 BroadcastChannel 信令(offer 每 100ms 重发、10s 超时)建 RTCPeerConnection,把直播流塞给弹窗做 VideoTexture第二幕·弹窗按 window.screenX 与主窗广播的画布矩形做屏幕级对齐(fov 50、planeZ −5、lerp .25)——拖动小窗划过屏幕,窗里的画面始终与主画面逐像素对位:透镜成立。第三幕·每章一支片元着色器重新冲洗直播画面(下表),且每章掉落一件镀金收藏品(#BF9852 · metalness 1 · roughness .2 · 仓库 HDR),点击拾起→彩带鱼群多一尾(Boids,上限 12)。第四幕·Shipping 章锁孔现身(keyhole.glb,命中高亮 envMapIntensity 1→10),把钥匙拖近 2 世界单位内放下:KEY_INSERT_COMPLETE 广播——主窗口 Theatre 轨道 coinRain 触发 150 枚 instanced 金币雨(重力 4、初速 2.5、寿命至 y<−3),鞍带金锁的 GLB 动画被 0.08 lerp 擦到开锁位。第五幕·弹窗切入 blacklight 紫光灯着色器 + Graffiti-Canvas KTX2 加法叠层(1:2 长卷、随主页滚动展开、mud_normal 扰动 + 哈希闪烁)——小窗变成 UV 手电,照出全站隐藏的涂鸦。

十二章 · 十二件镀金收藏品(原文实锤)

模型scale
Heroskateboard.glb1.25
Sidekickcompass.glb.7
Onlinescroll.glb(卷轴)1.2
Retailpos.glb5
Marketinglute.glb(鲁特琴)1.2
Checkoutcardreader.glb10
Operationscompass.glb.7
Shop appduck.glb(橡皮鸭)14
B2Biphone.glb14
Financeskateboard.glb1.25
Shippingkey.glb(钥匙)2.6
Developerring.glb(戒指)1.2
Shoppy 也在场:DancingRenaissanceShoppyv5_compressed.glb 常驻弹窗上缘(scale 2.5),两条动画轨 Armature / Hat,默认循环跳舞。金币 coin-reduced.glb 与全部收藏品共用金漆与 DRACO 解码(gstatic 1.5.6)。

透镜着色器(每章一支,全文在库)

处理
hero20px 网格化 + 4×4 Bayer 抖动(/25)→ 铜版画
marketing水面折射(8 步 × 7 向、freq 8、gain 700)+ mud 法线扰动
shop-app / developer3px Bayer 抖动(/20),一反相一正相
finance / shippingpow(rgb, 2.0) 显影加深
其余章pow(rgb, 2.5) 暗房基调
blacklight(涂鸦)luma 紫光灯 + fwidth 边缘检测 ×10 → 蓝边发光 + 径向衰减

Boids 彩带鱼群(原文实锤)

1 尾起步,每「发现」一章 +1,上限 12
霓虹 12 色 ⇄ 拾起时渐变金 12 色(lerp .15)
带状网格:15±1 节 · 链式 lerp .28±.05
鱼形宽度 pow(1−t,.3)·pow(t+.1,.5) × .06
体波 sin 双频(6–9Hz)×t² · 螺旋泳姿三层
分离力平方反比(r²<.16)·环绕半径 1.5×(1−moving×.7)
AdditiveBlending · DoubleSide · depthWrite off

跨窗协议(BroadcastChannel «shop-popup-sync» + localStorage 兜底)

消息方向 · 语义
CANVAS_RECT / MAIN_WINDOW主→弹 · 画布矩形 + 窗位/滚动(rAF 逐帧)
ACTIVE_SECTION主→弹 · 章名/进度/theatreTime(同一公式 (h+vh)/vh)
POPUP_POSITION / POPUP_CENTER弹→主 · 屏幕矩形 + 归一坐标/速度/颜色
POPUP_RIPPLE弹→主 · 拾起时的涟漪坐标 + 霓虹色(7 色 4s 自轮换)
WHEEL_EVENT弹→主 · 滚轮转发,主窗每帧吸收 15%
KEY_INSERT_COMPLETE / KEY_SEQUENCE_RESET弹⇄主 · 开锁 / 复位(金币雨、锁动画、涂鸦切换)
WEBRTC_READY / POPUP_CLOSED / KEY_ANIMATED_OUT握手成功 / 关窗清理 / 主画面钥匙飞离

生存法则与后门(原文实锤)

弹窗失焦 10s → window.close()
文档隐藏 9s → 关闭;视频冻结 3s×3 → 重连(≤3 次)
WebRTC 断 → 直接关窗(透镜不许离线)
STUN: stun.l.google.com:19302(localhost 免)
?mode=scan → 扫描模式(色锁黄,无涂鸦线)
?debug=1 → 调试;?popup=(空值)→ 免点击直开弹窗
主窗 beforeunload → 反手关掉自己的弹窗
连蝴蝶都知情:Butterflies chunk 独立订阅 KEY_INSERT_COMPLETE——开锁瞬间蝴蝶场景的 GLB 动画时间轴被逐帧擦向终点(timeScale=0 手动 mixer),关窗即回卷。核查注记:useKeyPopupStore 里预留的 keyUnlock/POPUP_CENTER 主窗消费端在成品 chunk 中未见接线(推断为未启用或内部版功能);弹窗构造线 GridPattern 的 26 条线坐标与本页侧栏达·芬奇手稿框同源(1440×890 系)。
X工艺细节二十件小事,件件有出处
细节数值(全部实锤)
视频灯箱 = View Transitions APIviewTransitionName: video-container / -background / -close-button;old contain → new cover
灯箱底是达·芬奇网格纸Line_Grid.svg 三档响应式(已落盘)
模态无障碍main/footer/header/aside 全部 inert + 焦点陷阱 + Esc
视频退出即卸源removeChild(source) + load() 释放解码器
响应式视频矩阵mov/webm/mp4 × 1x/2x × 桌面/移动 = 12 路 + 1 路 mp4 兜底
图片 srcset 阶梯8 档 × 400w 起步(1680×2/8 取整)
技能计数直播EventSource:init 全量 + update 增量(newUsers)
触觉反馈navigator.vibrate(10)(触屏点击技能标签)
popup 滚轮转发跨窗口 wheel 广播,主页面每帧吸收 15%
跳转焦点通道每章末隐形「Back to navigation」按钮(focus-visible 才现身)
细节数值(全部实锤)
吉祥物 SVGSMIL 动画 · 3.33667s · 悬停播放 · 面 #1c004f 罩 #7126ff
技能弹窗方向自适应按象限翻转 --popup-top/left/translate/origin/border
emoji 升腾10–14 枚 · delay rand×2+.3s · scale .6–1.2 · 时长=scale×2
计数上升1s 三次方缓出 rAF 数字滚动
Apps 云入场WAAPI scale ×.5→1 · 0–800ms 随机延迟 · ease-out-back
Apps 云斥力maxDistance 300 · repulsion 20 · 视差 ±15px
控制台彩蛋 = 藏宝图ASCII 手稿画 + 花体拉丁文「clavis reserat」→ /key 双窗装置(全链路见 IX 隐藏章)
创作后门URL ?theatre 参数动态加载 Theatre.js Studio
emoji 包下载彩蛋shopify-w26-emoji-pack.zip 隐形按钮
加载序列线框 6s→80% · 就绪后 1s 收口 · 标题居中→ai 滑入(−898px, .6s)→侧栏归位
降级观prefers-reduced-motion 全链路:Lenis 关、序曲跳、View Transition 禁
XI复刻要点可直接拷走的 token 与公式
:root{
  --paper:#f7f7ee;   --ink:#292919;
  --grey-light:#dcdcd0; --grey-mid:#909083;
  --grey-dark:#5c5c4e;  --nav-grey:#e2e2d9;
  --sidekick:#8051ff;   --glow:#88DDFF;
  --ease-back:cubic-bezier(.34,1.56,.64,1);
  --ease-frame:cubic-bezier(.72,.16,.19,.96);
  --ease-lines:cubic-bezier(.34,.22,.47,.84);
  --ease-fade:cubic-bezier(.25,.46,.45,.94);
  --grid-gap:clamp(12px,1vw,16px);
}
/* 罗马数字目录(原站原法) */
nav li a::after{
  counter-increment:nav-item;
  content:counters(nav-item,".",upper-roman);
}
/* 花体首字下沉 */
.drop-cap::first-letter{
  font-family:ImperialScript,Georgia,serif;
  font-size:clamp(6rem,75.79px + 2.63vw,7.5rem);
  line-height:0;
}
// 滚动 → Theatre 时间轴(架构核心)
const scale = (sectionH + vh) / vh
sheet.sequence.position =
  clamp01(progress) * scale + introOffset

// 分区进度(earlyCrossfade = .2 从第三章起)
zone = sectionH + vh + vh * earlyCrossfade
progress = (scrollY - (top - vh - early)) / zone

// 构造线:pathLength=1 归一化描线
path{stroke-dasharray:1;stroke-dashoffset:1px;
  transition:stroke-dashoffset 3s var(--ease-lines)}

// 选型决策 */
编排密 → Theatre.js(设计师拥有时间轴)
矢量微交互 → Rive(状态机 + 事件回调)
数据流示意 → Canvas 2D(够用即止)
油画世界 → 多层图像平面,不做全 3D
工程坑(实测):KTX2 必须配 worker 池流式解码否则首屏卡死;移动端 Safari 用原生滚动 + JS lerp .5 而非 Lenis(触摸链劫持会毁惯性);View Transition 的 old/new 要分别 object-fit contain/cover 才不跳形;罗马数字 counter 在 IV 以上宽度突变,务必等宽预留;Sobel 场景切换时先把主题三属性一起翻 light 再开窗,否则文字闪黑。
XII出处与方法页内简版 · 全文见文档

实锤(直接抽取)

  • 计算样式探针 + 样式表原文两份合计 130,780B(Tailwind v4.2.2 单文件 129,725B + 字体声明 1,055B)
  • 30 个 JS chunk 全量下载精读(路由包 243KB 至场景包 1.2KB)
  • 13 份 Theatre.js state JSON(3 份已落盘入库)
  • 四支字体真文件 + rest.json 蝴蝶几何 + butterfly2_256.ktx2 + PMREM 环境贴图 + 纸纹 + 网格纸
  • 六个 .bin 级证据以 manifest.json 逐文件记账
  • 33 张逐屏截图(SwiftShader 软渲染 WebGL)+ 8 帧滚动关键帧

推断(证据充分)

  • Hydrogen/Remix:路由命名 ($locale).editions.winter2026 + Oxygen CDN 路径(高)
  • 美术为 AI 生成 + 人工拼贴修饰:文件名残留提示词(高)
  • 「作坊 / 手稿」为有意母题:构造线 + 罗马数字 + 花体的系统性(高,意图类)

真实滚动关键帧

关键帧 0关键帧 1关键帧 2关键帧 3关键帧 4关键帧 5关键帧 6关键帧 7

脚本匀速滚动录屏抽帧;WebGL 幕布、反相、蝴蝶均真实触发。完整链路、局限清单(如 SSE 端点未抓包、Background 1MB 着色器未逐行)见 出处与方法事实核查

XIII评审结论全文见 设计评审.md

这站把「营销页」做成了「作品」的原因只有一个:工具链的权力分配。Theatre.js 把时间轴交给设计师,CMS 把场景交给内容团队,代码只保留物理与纪律——于是十二章油画各自成戏,而工程始终只有一套。

五份文档:设计解构 · 复刻指南 · 出处与方法 · 事实核查 · 设计评审