数据来源:node scripts/audit-examples.mjs --json docs/v11b-audit.json(v11c 重新跑过一遍,61 个源文件 + 运行时 computed + 工作台整屏像素采样)。
每条给「命中 / 未命中」、证据(文件:行号 或实测数值)、以及命中的判定(可接受 / 已修 / 未修)。
| # | 反例 | 命中 | 判定 |
|---|---|---|---|
| 1 | 装饰性渐变 / 渐变文字标题 | 否 | — |
| 2 | glow 光晕 / blob / 条纹 / 网格背景 | 否 | — |
| 3 | 玻璃效果用在所有卡片上 | 是 | 可接受(暂不修)—— 换成实白面属于视觉改版 |
| 4 | 彩色左边框告警条 | 否 | — |
| 5 | emoji 当图标 | 否 | — |
| 6 | max-height:999px 展开动画 |
否 | — |
| 7 | transition: all |
否 | — |
| 8 | 阴影超过 3 档 | 否 | — |
| 9 | 纯 #000 / #FFF |
否 | — |
| 10 | 所有间距同一个值 | 否 | — |
| 11 | box-shadow 做凸起 / 凹陷 |
否 | — |
| 12 | hover 跳动 > 2px 或放大 | 否 | — |
| 13 | 圆角 > 16px | 是(圆形元素) | 可接受(圆形,不是设计圆角) |
| 14 | 强调色面积 > 5% | 否 | — |
| 15 | 所有卡片同时入场无错峰 | 否 | — |
命中 2 条,其中 0 条属于「已修」、2 条属于「可接受」。
渐变文字(background-clip: text):0 处。源码里出现的 linear-gradient 只有两类:玻璃芯片边(--kf-glass-chip / --kf-edge-chip,src/pages/card-toolbar.js:53-55)与背景光场,不是标题上的花活。条形的「蓝→紫渐变」在 v11 已删,改成单色(src/pages/view-stages.js:64,.ov .bar i { background: var(--tone, …) })。
运行时非 0 扩散的发光阴影 0 处、conic-gradient 0 处、repeating-linear-gradient 0 处。背景光场是 kf-app::before 上 5 个 radial-gradient(项目设计基色,64s 极慢漂移),属于背景层而不是卡片旁的装饰 blob。
kf-glass-card 仍是「白面 .72 + backdrop-filter: blur(8px)」:工作台 .grid2 两张卡(src/pages/view-workbench.js:172-173)、成员页 .gcard(src/pages/view-members.js:90)、机会卡外壳、各页筛选卡都走它。aside.side.kf-glass.is-panel(src/layout/kf-nav.js:128)、kf-drawer、手机筛选 sheet(src/pages/filter-sheet.js:94)。kf-glass-needs-transparent-host),换实白面要连带改 backdrop-filter 链路,不能在收尾轮顺手做。border-left-color ≠ border-top-color 的运行时元素:0 处。告警样式 .alert 改成 6% 同色染色 + 1px 同色描边(src/styles/tokens.js 的 .alert 规则)。
图标全部来自 src/components/icons.js(24×24 SVG 路径,stroke 1.9)。文本里出现的「→」「·」「↗」「▲」是排版标点(箭头 / 间隔点 / 增量三角),不是 emoji 字符(U+2192 等,So 类)。
max-height:999px 展开动画 —— 未命中grep -rn "max-height: *999" src → 0 处。展开用 grid-template-rows: 0fr → 1fr(src/pages/report-card.js:73,运行时实测 .detail 闭合 20px 0px → 展开 20px 41.59px)。
transition: all —— 未命中源码 0 处;运行时遍历全部 shadow root,transition-property 为 all 的元素 0 个(共扫描 405 个带过渡的元素)。
令牌层 --elev-1/2/3 共 3 档;组件只引用语义名。运行时(静止 + hover)阴影几何去色后共 4 种:0 1px 2px 0(1px 描边层 --ring-1,不算投影)、0 12px 32px -8px(elev-3)、0 -12px 32px -8px(抽屉上浮),以及静止态无阴影。投影几何 3 种,未超档。
#000 / #FFF —— 未命中computed color / background-color 为 rgb(0,0,0) 的元素 0 处;#FFF 只在 --kf-ink-inv(深色底反白文字)里出现,作为元素背景的纯白 0 处。
版式距离四档:卡内 padding 16 / 卡内 gap 12 / 卡片之间 24 / 区块之间 48(令牌 --kf-space-card / --kf-space-in / --kf-space-card-gap / --kf-space-section,src/styles/tokens.js;使用见 src/pages/shared.js 的 .p-sec 注释)。另用 4 / 8 做行内小缝(4pt 栅格)。详见 docs/v11b-spacing.txt 与 scripts/audit-spacing.mjs。
box-shadow 做凸起 / 凹陷 —— 未命中拟物:3D 凸起 / 凹陷阴影 0 处。inset 阴影只有 --kf-hi(两条 1px 内高光,src/styles/tokens.js:143)与抽屉顶边柔光,是发丝高光不是拟物浮雕。
真实指针悬停后 transform = matrix(1, 0, 0, 1, 0, -1):平移 -1px,缩放 1(无放大);静止态 none。过渡 150ms。
设计圆角令牌 --kf-radius: 16px。运行时最大值 50px,全部来自圆形元素:头像、进度环外框(4 个)。圆形不是设计圆角,判定可接受;没有把圆形改成 16px 方形。
工作台 1440×960 首屏截图里接近强调色(#5B5BD6 系:蓝 ≫ 红、R≈G)的像素占比 0.36%。阈值 5%。
.kf-enter 的 animation-delay 实测:["0s","0.04s","0.08s","0.12s","0.16s","0.2s"] 等阶梯(--i × 40ms,src/styles/tokens.js:438 的 .kf-enter),时长 400ms;kf-app 用 IntersectionObserver 把首屏外元素挂住、滚到视口才播。
node scripts/audit-examples.mjs --json docs/v11b-audit.json # 15 条 + 动效 A1-A7
node scripts/audit-spacing.mjs # 四档间距