color-mix() 在 Chrome 111+、Firefox 112+、Safari 16.4+ 支持但行为不一致,需显式声明色彩空间如 in srgb;旧版 Safari 完全忽略,须配降级方案;@supports 检测应优先用 oklch() 或完整 color-mix() 语法。Chrome/Firefox/Safari 对 color-mix() 的支持现状现在直接用 color-mix() 写渐变中间色,Safari 16.4+ 才认,Chrome 111+ 和 Firefox 112+ 虽已支持,但默认行为不一致:Firefox 默认按 srgb-linear 混合,Chrome 和 Safari 用 srgb。没声明空间时,同一行代码在 Firefox 里颜色偏灰,视觉上就"不对"。必须显式写全语法:color-mix(in srgb, red 50%, blue 50%),不能省略 in srgb旧版浏览器(包括 Safari 16.3 及更早)完全忽略该函数,会回退到声明的前一个有效颜色值,所以得配降级方案不要指望 color-mix() 在伪类或动画中动态生效------部分 Safari 版本对它在 :hover 里的重计算有延迟或跳变用 @supports 安全启用现代色彩函数别用 UA 判断,也别靠 JS 检测,@supports 是唯一靠谱的 CSS 原生路子。但它对色彩函数的支持检测有陷阱:只写 @supports (color: color-mix(...)) 会被所有浏览器当语法错误直接丢弃,必须用字符串形式绕过解析。正确写法是:@supports (color: oklch(0% 0 0)) { ... } 或 @supports (background: color-mix(in srgb, red, blue)) { ... }检测 oklch() 比检测 color-mix() 更稳------前者是基础色函数,后者依赖混合引擎,兼容性梯度更陡如果同时要用 color-mix() 和 oklch(),优先按 oklch 分组,再在内部嵌套 color-mix 规则,避免多层嵌套失效prefers-color-scheme 和 color-scheme 配合系统色的坑设了 color-scheme: light dark 并不等于浏览器会自动把 Canvas、input、button 的边框/阴影换成对应主题色------它只影响表单控件的**默认渲染逻辑**,而自定义背景、文字色仍需手动适配。prefers-color-scheme: dark 查询在 Windows + Chrome 115 之前版本可能返回空值,建议加兜底:@media (prefers-color-scheme: no-preference) { :root { --text: #333; } }系统深色模式下,Canvas 的默认背景是黑色,但若你设了 background: Canvas,Safari 会把它当白色处理,结果文字看不见------得用 background: CanvasText 反推别在 :root 里直接用 color-scheme 做变量开关,它不触发 CSS 变量重计算;改用媒体查询包裹 --primary: ... 声明HEX/RGB 与 oklch() 混用时的亮度错位把设计稿给的 #4a6fa5 直接替换成 oklch(60% 0.18 250) 看起来差不多,但在深色背景下,oklch 的 L 值是感知亮度,而 HEX 的灰度是线性计算,实际可读性差一截------尤其小字号文本。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
存在的五月雨2 小时前
Python操作 调用yolov8n-pose2501_914245932 小时前
Go语言如何遍历字符串_Go语言字符串遍历方法教程【指南】BullSmall2 小时前
Oracle 自动分区表(Interval Partition)详解Shorasul2 小时前
SQL事务隔离级别详解_隔离级别差异对比2301_815279522 小时前
如何让 Bootstrap 图标在 Vue 3 中持续旋转动画2401_837163892 小时前
Layui怎么在表格标题栏中嵌入一个迷你的HTML搜索表单qq_372906932 小时前
Alembic 多分支迁移中依赖顺序的正确配置方法一只大袋鼠2 小时前
MyBatis 进阶实战(四): 连接池、动态 SQL、多表关联(一对多 / 多对一 / 多对多)maqr_1102 小时前
如何在 macOS 上为 PHP 8.0 正确集成 XML-RPC 支持