iter(g295): 新增表面阶梯审计并修正悬停底

This commit is contained in:
HIsheR
2026-10-26 23:35:57 +08:00
parent df40eb0073
commit 3533459e00
11 changed files with 105 additions and 23 deletions
+4 -5
View File
@@ -83,10 +83,9 @@ function parseColor(text) {
return { r: ch(parts[0]), g: ch(parts[1]), b: ch(parts[2]), a: parts[3] === undefined ? 1 : parseFloat(parts[3]) };
}
/*** 作用:求表达式的值:递归替换 var(--x),支持 alpha 变量与 color-mix 单层混色
* 只覆盖令牌文件里真实用到的语法(in srgb + 两个颜色 + 一个百分比),不做通用 CSS 求值器——
* 遇到认不出的表达式直接抛错,宁可红也不静默算错对比度。 ***/
function resolve(expr, vars, depth = 0) {
// 只覆盖令牌文件里真实用到的语法(in srgb + 两个颜色 + 一个百分比),不做通用 CSS 求值器——遇到认不出的表达式直接抛错,宁可红也不静默算错
/*** 作用:求表达式的值:递归替换 var(--x),支持 alpha 变量与 color-mix 单层混色 ***/
export function resolve(expr, vars, depth = 0) {
if (depth > 12) throw new Error(`令牌引用层级过深:${expr}`);
const text = expr.trim();
const color = parseColor(text);
@@ -167,7 +166,7 @@ function luminance(c) {
}
/*** 作用:两色对比度(1~21),前景先合成到底色上再算;半透明底由调用方压到页面底色上 ***/
function ratio(fg, bg) {
export function ratio(fg, bg) {
const solid = bg;
const f = over(fg, solid);
const l1 = Math.max(luminance(f), luminance(solid));