主题不只有明暗,还包括对比度与密度
别名: 主题轴 · 对比度主题 · 密度主题 · contrast theme · density theme
概念解释
主题是一组可独立切换的轴,不是「亮」和「暗」两个皮肤。明暗改的是表面与文字的明度方向;对比度改的是角色之间的最小差别,高对比把边框、焦点环和文字推到更硬的差;密度改的是间距、字号和控制高度,紧凑把同一棵树收成更短的行。把主题当成暗色开关,会让高对比用户仍困在低对比的暗色里,也会让需要一屏看更多行的人只能得到「变暗了的宽敞布局」。
三轴正交:可以是浅色 + 高对比 + 紧凑,也可以是深色 + 标准对比 + 舒适。一个叫 dark 的布尔盖不住这个空间。
机制
明暗是一张表面调色。对比度是约束:同样的语义角色,在高对比轴上必须拉开到可分辨的差,有时要加边、加厚度,而不是只把颜色加深一点。密度是度量尺:同一角色的内边距从 16 收到 8,行高从 48 收到 32,换行和截断的临界点整体移动。三套决策作用在不同的量上,所以失败也不同——暗色失败是一块表面看不清,对比失败是两个角色被看成一个,密度失败是点不到、读不下、或一屏信息过载。
用一个暗色开关实现「主题」,等于把后两轴的需求挤进明暗表。高对比被做成「更暗的暗」,紧凑被做成「暗色下碰巧把 padding 写小一点」。用户无法单独打开自己需要的那一轴,系统也无法单独验证那一轴。轴被折叠之后,表面上主题功能存在,实际上只有明度被当一等公民。
边界
没有视力或运动需求、信息量始终很少的一次性营销页,可以只提供明暗甚至只提供一套,不必先造三轴。对比轴若只是把所有颜色乘一个系数、不检查角色对,会制造过曝或过暗,那不是对比主题,是滤镜。密度轴若只缩放整个视口,等于强迫所有人用浏览器缩放,会把不该缩小的触目标和该缩小的间距混在一起。操作系统已提供对比与字号时,产品轴要与系统设置对齐或让路,不要并排再做一套互相打架的开关。品牌表不是主题轴:品牌是谁在说话,主题是同一说话者的阅读与操作条件。
怎么落地
- 把主题拆成独立轴:明暗、对比(至少标准 / 高)、密度(至少舒适 / 紧凑)。每轴有自己的取值表,组合由乘积产生,不预烘焙「暗色紧凑」为第四套皮肤。
- 高对比表必须提升边框、焦点环和文字与表面的差,而不是只替换背景图。紧凑表必须改控制高度与间距,并重测触目标与截断。
- 设置界面上三轴分开可控;不要用一个「深色模式」开关冒充全部主题。
- 验证:固定品牌与流程,只切对比轴,检查一对原先易混的角色(次要文字 vs 表面、未选中边框 vs 背景)是否被拉开。只切密度轴,测量同一表格的行高与一屏行数,并点最边上的图标——点不到就是密度把目标收过了。再打开「只有明暗」的旧开关:高对比用户若仍无法完成阅读,说明另外两轴还没从明暗里独立出来。