Web 功能:
prefers-color-scheme 媒体查询
color-scheme
prefers-contrast 媒体查询
强制颜色
系统颜色
color-mix()
Oklab 和 OkLCh
Lab 和 LCH
相对颜色
符合无障碍设计标准的颜色
请勿仅使用颜色来指示界面组件的存在或其状态:请使用图标和/或形状来帮助区分。请勿仅使用颜色来表示成功/错误。使用图标或文字。
<!-- Good: Denotes state without colors alone -->
<div class="error-msg">
<span aria-hidden="true">❌</span>
<span>The password entered was invalid.</span>
</div>
对比度
- 最低对比度标准:普通文本保持 4.5:1,大号文本或图标保持 3:1。
- 确保非文本对比度符合标准:确保界面组件边界和状态的对比度至少为 3:1。
- 这包括构成界面组件边界或指示界面组件存在的视觉元素(边框、背景、盒阴影、下划线),例如输入字段边框。
- 这还包括指示组件内活动状态的视觉元素(例如,复选框对勾标记或开关滑块)。
- 注意:满足 3:1 的非文本对比度要求可能会给极简设计带来挑战。柔和的渐变或细微的内嵌/外嵌阴影可以柔化视觉边界,同时满足无障碍要求。
- 仅在必要时使用
prefers-contrast:如果设计中使用了需要增强的低对比度强调色(例如,细微的边框、柔和的次要文本),请使用@media (prefers-contrast: more);大多数已达到基准对比度的网站都不需要使用它。
浅色和深色配色方案
- 支持浅色和深色配色方案:遵循
@media (prefers-color-scheme: dark)并将其与color-schemeCSS 属性搭配使用,以便表单控件、滚动条和其他 UA 呈现的表面保持一致。 如需了解详情,请参阅深色模式。
强制颜色模式
- 支持强制颜色模式:在强制颜色模式(Windows 上的高对比度模式)下,浏览器会使用系统关键字覆盖作者颜色,并移除
background-image、box-shadow和border-image。使用@media (forced-colors: active)为颜色令牌定义系统颜色后备。 - 仅在颜色是重要信息时使用
forced-color-adjust: none(语法荧光笔、颜色选择器色板)。请勿仅为了保持美观而使用forced-color-adjust: none。 - 不要依赖
background-image、box-shadow或border-image来传达边框、分隔线或状态:它们会在强制颜色模式下消失(通常在打印时也会消失)。如果必须使用,请确保在强制颜色模式下有替代方案,例如使用系统颜色关键字(CanvasText、LinkText、ButtonText、Highlight、GrayText等)的outline或border。
生成色调
在动态生成色调之前,请检查是否可以使用现有的预定义设计令牌。这样一来,设计师可以更好地控制设计,并确保一致性。
如果您需要动态生成更浅或更深的颜色,请执行以下操作:
- 请勿仅调整
oklch/oklab或lch/lab中的亮度通道,例如oklab(from var(--primary) 0.9 a b)。虽然理论上这是正确的方法,但浏览器尚未实现色域映射,因此生成的颜色不可预测。 - 您可以使用
color-mix()与白色或黑色混合(最好在oklab中)。这样可以使颜色安全地保持在色域内,但往往会使颜色过度去饱和,并产生褪色的色调和阴影。 - 您可以将亮度调整与其他任何方法(例如
color-mix(in oklab, oklch(from var(--primary) 0.9 c h), white 30%))结合使用,以在两者之间取得平衡,但亮度调整幅度不应超过 30%。