TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 570 subscribers
Post #1348 6
CSS渐变上的颜色对比度问题及解法

自动无障碍检查(如axe-core)对渐变背景上的文字常返回"needs review",因为对比度检测只读取纯色背景色,而渐变通过background-image设置,无单一背景值可判断。实际上,渐变的对比度最差情况一定发生在色停止点,只需检查每个停止点与文字的对比度即可。

关键算法:对于每个被标记为"needs review"的元素,读取文字颜色、字号和字重(确定所需对比度阈值:普通文本4.5:1,大文本3:1)。向上遍历祖先元素,找到第一个设置了background-image包含gradient()的元素,提取所有颜色停止点(浏览器已计算为具体rgb值)。计算文字颜色与每个停止点的对比度,取最小值。若该最小值低于阈值,则为真实失败;否则可通过。

对比度计算使用WCAG 1.4.3公式:相对亮度由各通道线性化后加权得到,对比度为较亮亮度+0.05除以较暗亮度+0.05。具体代码见素材。

局限:此方法仅适用于不透明CSS渐变。背景图片和半透明停止点(alpha<1)仍无法从CSS推导,需保留人工检查。也不处理文字阴影、混合模式或文字跨越渐变边缘的情况。


这一解法将常见的盲点转化为明确的通过或失败,让开发者能精准定位问题并修复。

#开发者 #工具 #CSS #渐变 #颜色对比度 #WCAG #无障碍 #a11y
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 30, 2026AMSI 绕过技术 2026 开发者指南 AMSI(Antivirus Malware Scan Interface)是 Windows 的恶意脚本扫描接口,覆盖 PowerShe…
  2. Sep 30, 2026AI Agent 为什么记不住事 和 AI Agent 协作时最容易注意到的一点是:它们很擅长回答问题,却不擅长记住昨天发生过什么。你可以和它长聊一轮,做出一堆决定、说明偏好、一起…
  3. Sep 30, 2026wpipe:面向 Python 开发者的轻量编排库 wpipe 是一个纯 Python 可嵌入的编排库,目标是让数据管道的开发回到「编辑—运行—调试」的快速循环,而不必为验证业务逻…
  4. Sep 29, 20262,916 个 AI 网站 8 月流量:转录与图生 3D 起飞 Anjin Radar 追踪了 2,916 个 AI 网站的月度访问量,数据截至 2026 年 9 月 28 日。访…
  5. Sep 29, 2026Python 虚拟环境其实是个软链接 在 Linux 和 macOS 上执行 python3 -m venv .venv,并不会复制一份 Python。venv 里的 python…
  6. Sep 29, 2026Will It Focus:相机自动对焦兼容性查询 Agent 这是一个面向摄影器材的自动对焦兼容性查询工具,但它真正的看点在于工程实现:如何让模型引用厂商原文时,保证引用的确实是…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →