新的颜色对比度算法-感知对比度算法APCA
灵感的源泉来源于不断的接受新鲜事物。
Chrome 89 新功能一览,性能提升明显,大量 DevTools 新特性!
文章中的新特性,掌握了对日常开发,很受益,赶紧更新浏览器版本吧。
谈谈其中提到的:新的颜色对比度算法-先进感知对比度算法(APCA)。

启用该功能设置:选中 Settings > Experiments 下的 Enable new Advanced Perceptual Contrast Algorithm (APCA) replacing previous contrast ratio and AA/AAA guidelines 复选框。
能帮助开发者验证文本是否满足建议的对比度比率。
对比度
在构建页面或应用程序时需要考虑对比度,这一点很重要。对比度是页面上相邻显示的颜色之间的差异。
对比度差的页面很难阅读,并且元素也不突出。具有良好对比度的页面,不仅看起来更好,而且对用户更加友好和具有高可访问性。
某些视力较差的人看不到非常明亮或非常暗的区域。所有内容往往都看起来几乎相同,这使区分轮廓和边缘变得很困难。
对比度比率测量文本前景和背景之间的亮度差异。如果文本的对比度较低,则这些视力较差的用户可能会以空白屏幕的形式体验您的网站。
为了帮助开发者正确地获得对比度,WCAG(Web内容可访问性指南)建议最小(AA)对比度至少为 4.5:1,对于大文本,则为 3:1,或者增强(AAA)对比度为 7:1 或 4.5:1(大文本)。


在控制台查看
good

bad

颜色选取器可帮助你验证文本是否满足建议的对比度比率:
检查拾色器的 " 对比度比率 " 部分。 一个复选标记表示该元素满足 最低建议。 两个复选标记表示它符合 增强的建议。
单击 " 对比度比率 " 部分可查看详细信息。可视选取器中的颜色选取器顶部会显示一条线。如果当前颜色满足建议,则行的同一侧的任何内容也满足建议。如果当前颜色不符合建议,则同一侧的任何内容也不能满足建议。
插件或网站
有很多插件或网站可以进行检查,比如:https://contrast-ratio.com/。

感知对比度算法(APCA)
感知对比度算法(APCA)正在取代颜色选择器中的 AA/AAA 对比度。
APCA 是在现代色觉研究的基础上发展起来的一种新的计算对比度的方法。与 AA/AAA 相比,APCA 更依赖于上下文。对比度是根据文本的空间、颜色和上下文的空间属性来计算的。
- 文本的空间属性,包括字体粗细和大小
- 颜色的空间属性,包括文本和背景之间的感知对比度
- 上下文的空间属性,包括环境光、周围和预期用途

APCA Math 原理
APCA is the Advanced Perceptual Contrast Algorithm。

更多请看resiurces
js 实现的 SAPC
	const sRGBtrc = 2.218;
	const Rco = 0.2126;		// sRGB Red Coefficient
	const Gco = 0.7156;		// sRGB Green Coefficient
	const Bco = 0.0722;		// sRGB Blue Coefficient
	const scaleBoW = 161.8;	// Scaling for dark text on light (phi * 100)
	const scaleWoB = 161.8;	// Scaling for light text on dark — same as BoW, but
	const normBGExp = 0.38;		// Constants for Power Curve Exponents.
	const normTXTExp = 0.43;	// One pair for normal text,and one for REVERSE
	const revBGExp = 0.5;		// FUTURE: These will eventually be dynamic
	const revTXTExp = 0.43;		// as a function of light adaptation and context
	const blkThrs = 0.02;	// Level that triggers the soft black clamp
	const blkClmp = 1.75;	// Exponent for the soft black clamp curve
  function SAPCbasic(Rbg,Gbg,Bbg,Rtxt,Gtxt,Btxt) {
    var	SAPC = 0.0;
    // Find Y by applying coefficients and sum.
    var	Ybg = Rbg*Rco + Gbg*Gco + Bbg*Bco;
    var	Ytxt = Rtxt*Rco + Gtxt*Gco + Btxt*Bco;
    if ( Ybg > Ytxt ) {	///// For normal polarity, black text on white
      // soft clamp darkest color if near black.
      Ytxt = (Ytxt > blkThrs) ? Ytxt : Ytxt + Math.abs(Ytxt - blkThrs) ** blkClmp;
      SAPC = ( Ybg ** normBGExp - Ytxt ** normTXTExp ) * scaleBoW;
      return (SAPC < 15 ) ? "0%" : SAPC.toPrecision(3) + "%";
    } else {			///// For reverse polarity, white text on black
      Ybg = (Ybg > blkThrs) ? Ybg : Ybg + Math.abs(Ybg - blkThrs) ** blkClmp;
      SAPC = ( Ybg ** revBGExp - Ytxt ** revTXTExp ) * scaleWoB;
      return (SAPC > -15 ) ? "0%" : SAPC.toPrecision(3) + "%";
    }
  }
  // 其他省略,详细可看 code samples
最后
前端开发,掌握一些色彩搭配是非常有必要的。好的色彩搭配,能吸引用户的眼球。人人都喜欢美的事物。
google 搜索了一下,edge 89 也支持了呢,Microsoft Edge 89 (DevTools 中的新增)。

edge

你使用过这个功能了吗?
新的颜色对比度算法-感知对比度算法APCA的更多相关文章
- Stanford大学机器学习公开课(三):局部加权回归、最小二乘的概率解释、逻辑回归、感知器算法
		(一)局部加权回归 通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting).如下图的左图.而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为 ... 
- 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法
		课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ... 
- 浅谈压缩感知(二十六):压缩感知重构算法之分段弱正交匹配追踪(SWOMP)
		主要内容: SWOMP的算法流程 SWOMP的MATLAB实现 一维信号的实验与结果 门限参数a.测量数M与重构成功概率关系的实验与结果 SWOMP与StOMP性能比较 一.SWOMP的算法流程 分段 ... 
- 浅谈压缩感知(二十五):压缩感知重构算法之分段正交匹配追踪(StOMP)
		主要内容: StOMP的算法流程 StOMP的MATLAB实现 一维信号的实验与结果 门限参数Ts.测量数M与重构成功概率关系的实验与结果 一.StOMP的算法流程 分段正交匹配追踪(Stagewis ... 
- [转]压缩感知重构算法之分段正交匹配追踪(StOMP)
		分段正交匹配追踪(StagewiseOMP)或者翻译为逐步正交匹配追踪,它是OMP另一种改进算法,每次迭代可以选择多个原子.此算法的输入参数中没有信号稀疏度K,因此相比于ROMP及CoSaMP有独到的 ... 
- 压缩感知重构算法之OMP算法python实现
		压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ... 
- 浅谈压缩感知(三十一):压缩感知重构算法之定点连续法FPC
		主要内容: FPC的算法流程 FPC的MATLAB实现 一维信号的实验与结果 基于凸优化的重构算法 基于凸优化的压缩感知重构算法. 约束的凸优化问题: 去约束的凸优化问题: 在压缩感知中,J函数和H函 ... 
- 浅谈压缩感知(三十):压缩感知重构算法之L1最小二乘
		主要内容: l1_ls的算法流程 l1_ls的MATLAB实现 一维信号的实验与结果 前言 前面所介绍的算法都是在匹配追踪算法MP基础上延伸的贪心算法,从本节开始,介绍基于凸优化的压缩感知重构算法. ... 
- 浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)
		主要内容: gOMP的算法流程 gOMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.gOMP的算法流程 广义正交匹配追踪(Generalized OMP, g ... 
随机推荐
- Leetcode(29)-两数相除
			给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ... 
- JS编程练习:封装insertAfter函数(功能类似于系统insertBefor)
			那么insertAfter()要实现的功能: 在指定的子节点后面插入新的子节点: 1 <body> 2 <div> 3 <p></p> 4 <sp ... 
- spring-cloud-eureka-client-consumer
			服务注册中心eureka-server已经搭好,并且SPRING-CLOUD-NETFLIX-EUREKA-CLIENT-APPLICATION提供一个hello服务 编写一个eureka-clien ... 
- CNN可视化技术总结(三)--类可视化
			CNN可视化技术总结(一)-特征图可视化 CNN可视化技术总结(二)--卷积核可视化 导言: 前面我们介绍了两种可视化方法,特征图可视化和卷积核可视化,这两种方法在论文中都比较常见,这两种更多的是用于 ... 
- 017.NET5_内置容器基本使用
			IOC容器IServiceCollection .net 5已经内置了IOC容器. 什么是IOC? 把对象的创建交给第三方容器去创建 如何使用内置的 IOC IServiceCollection ? ... 
- 前端水印方案 All In One
			前端水印方案 All In One base64 用户名 图片水印 <div id="wm" style="pointer-events: none; width: ... 
- CSS Grid & Flex poster PDF 海报定制
			CSS Grid & Flex poster PDF 海报定制 CSS 手工实现 导出 SVG / PNG 导出 PDF 打印,定制海报 refs https://css-tricks.com ... 
- ES2021  & ES12
			ES2021 & ES12 ES2021 new features replaceAll String.prototype.replaceAll const str = `abc,abc`; ... 
- Web SQL& IndexedDB
			Web SQL& IndexedDB https://developer.mozilla.org/en/docs/Web/API/IndexedDB_API https://mdn.githu ... 
- C++面试题集合(持续更新)
			C++面试中常被问到的几个知识点: 1. 基本概念 多态是什么,C++通过什么实现的多态.虚函数是什么,纯虚类是什么.重载是什么,重写是什么.重载运算符怎么写.new和malloc有什么区别.公有继承 ... 
