用户 2026-11-04:
不同的软件要有不同的颜色。现在颜色有点少,已经快不够分了,至少应该有 10 个左右。 还是不对呀,需要一个完整的色板,右侧那些默认颜色就不要了。 下拉框的颜色就用那个软件的主题颜色,不行吗?
调色板有两份独立硬编码:
lib/util.php
fb_color_default_for()
lib/admin_taxonomy.php
$presets
两边色值还不一样,早就不同步了。用户在后台只能从 8 个里选, 而实际分配用的是另一批色值。
新增 fb_color_palette() 作为唯一来源,两侧都调用它,12 色。
fb_color_palette()
色相:2/32/62/92/122/152/178/200/232/266/293/330
原生 <input type="color"> 只有个小方块,用户不知道能点。 改成点击弹出色板:342×200 色相/饱和度画布 + 色相条 + 明度条 + 十六进制输入。 右侧预设圆点删除(能任意取色,再摆一排样例是重复)。
<input type="color">
--brand-tint-1/2/3 三档浅色(PHP 用 fb_color_tint() 算好再输出)。
--brand-tint-1/2/3
fb_color_tint()
overflow:hidden
<details class="tax-form-box">
position:fixed
color-mix(in srgb, var(--brand) 9%, #fff)
CSS.supports()
oklab(0 0 0 / 0)
is-active
:hover
mouseMoved
elementFromPoint
与 #6 是两回事:#6 只动列表/详情的 DOM 顺序;本单是主题色系统(调色板统一 + 自绘色板 + 下拉跟随主题色),涉及 util.php/admin_taxonomy.php/style.css,可独立验收
本单是事后补建的工单 —— 改动在 2026-11-04 已全部上线,当时未按铁律先建单,此处补录。
a00e222
ad1b0ee
338a35c
a2a3306
8db38a8
12 色无重复;白底对比度 4.76 ~ 6.19(全 ≥4.5); 最小相邻色相间距 22°(178°→200°),其余 26~37°。
真实 mouseMoved 触发 hover:背景 rgb(255,238,238),:hover 匹配 true, 选中项明显深于 hover。
未改动(#0057b8 / #b4553c / #6a4c93 / #0e7c86 / #3a5a8c 保持原值)。
color-mix()
color-mix
No dependencies set.
The note is not visible to the blocked user.
背景
用户 2026-11-04:
调研发现的根因(比"数量不够"严重)
调色板有两份独立硬编码:
lib/util.php的fb_color_default_for()lib/admin_taxonomy.php的$presets两边色值还不一样,早就不同步了。用户在后台只能从 8 个里选,
而实际分配用的是另一批色值。
改法
1. 统一出口
新增
fb_color_palette()作为唯一来源,两侧都调用它,12 色。2. 12 色按色相环切分
色相:2/32/62/92/122/152/178/200/232/266/293/330
3. 后台改为自绘取色面板
原生
<input type="color">只有个小方块,用户不知道能点。改成点击弹出色板:342×200 色相/饱和度画布 + 色相条 + 明度条 + 十六进制输入。
右侧预设圆点删除(能任意取色,再摆一排样例是重复)。
4. 下拉框跟随软件主题色
--brand-tint-1/2/3三档浅色(PHP 用fb_color_tint()算好再输出)。踩过的坑
原调色板里 185°/212°/217° 三个蓝本就挤在一起,
"塞缝隙"思路是错的,必须重排整个色相环。
overflow:hidden裁掉一半 ——表单在
<details class="tax-form-box">里,absolute 定位会被裁,连带色相条看不见,用户以为"只有蓝色"。改
position:fixed解决。color-mix(in srgb, var(--brand) 9%, #fff)算出来是透明 ——CSS.supports()返回 true、规则也匹配上了,但计算值是oklab(0 0 0 / 0)。改成 PHP 算好输出 CSS 变量。
is-active类测不出:hover——必须发真实
mouseMoved事件才能验证。验收
elementFromPoint均命中自己 → 未被裁切为什么单独建单
与 #6 是两回事:#6 只动列表/详情的 DOM 顺序;本单是主题色系统(调色板统一 + 自绘色板 + 下拉跟随主题色),涉及 util.php/admin_taxonomy.php/style.css,可独立验收
追溯关联(补记)
本单是事后补建的工单 —— 改动在 2026-11-04 已全部上线,当时未按铁律先建单,此处补录。
对应提交
a00e222调色板从 8 色扩到 12 色(按色相环重排);后台预设改为共用同一份ad1b0ee主题色改为自绘取色面板(任意取色);图标上传加即时预览与状态提示338a35c主题色改为完整色板:画布 342x200,加明度条,删除右侧预设圆点a2a3306修色板被裁切 + 让人看得出能选全色域8db38a8下拉框改回软件主题色;修 color-mix 与变量配合失效的问题实际验证结果
调色板
12 色无重复;白底对比度 4.76 ~ 6.19(全 ≥4.5);
最小相邻色相间距 22°(178°→200°),其余 26~37°。
后台取色面板
elementFromPoint均命中自己 → 未被overflow:hidden裁切红/黄/绿/青/蓝/品红,互不相同 → 覆盖全色域
下拉跟随主题色
真实
mouseMoved触发 hover:背景 rgb(255,238,238),:hover匹配 true,选中项明显深于 hover。
现有软件颜色
未改动(#0057b8 / #b4553c / #6a4c93 / #0e7c86 / #3a5a8c 保持原值)。
遗留 / 待观察
属正常使用,非缺陷。
color-mix()配 CSS 变量在本环境解析成透明,已改用 PHP 预算值的方案;若将来浏览器行为修复,可考虑简化回
color-mix,非必要。