新的颜色对比度算法-感知对比度算法APCA

容器控 (ContainerLover)
• 阅读 3409
灵感的源泉来源于不断的接受新鲜事物。

Chrome 89 新功能一览,性能提升明显,大量 DevTools 新特性!

文章中的新特性,掌握了对日常开发,很受益,赶紧更新浏览器版本吧。

谈谈其中提到的:新的颜色对比度算法-先进感知对比度算法(APCA)。

新的颜色对比度算法-感知对比度算法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(大文本)。

最小对比度(AA):

新的颜色对比度算法-感知对比度算法APCA

增强对比度(AAA):

新的颜色对比度算法-感知对比度算法APCA

在控制台查看

good

新的颜色对比度算法-感知对比度算法APCA

bad

新的颜色对比度算法-感知对比度算法APCA

颜色选取器可帮助你验证文本是否满足建议的对比度比率:

检查拾色器的 " 对比度比率 " 部分。 一个复选标记表示该元素满足 最低建议。 两个复选标记表示它符合 增强的建议。

单击 " 对比度比率 " 部分可查看详细信息。可视选取器中的颜色选取器顶部会显示一条线。如果当前颜色满足建议,则行的同一侧的任何内容也满足建议。如果当前颜色不符合建议,则同一侧的任何内容也不能满足建议。

插件或网站

有很多插件或网站可以进行检查,比如:https://contrast-ratio.com/

新的颜色对比度算法-感知对比度算法APCA

感知对比度算法(APCA)

感知对比度算法(APCA)正在取代颜色选择器中的 AA/AAA 对比度。

APCA 是在现代色觉研究的基础上发展起来的一种新的计算对比度的方法。与 AA/AAA 相比,APCA 更依赖于上下文。对比度是根据文本的空间、颜色和上下文的空间属性来计算的。

  • 文本的空间属性,包括字体粗细和大小
  • 颜色的空间属性,包括文本和背景之间的感知对比度
  • 上下文的空间属性,包括环境光、周围和预期用途

新的颜色对比度算法-感知对比度算法APCA

APCA Math 原理

APCA is the Advanced Perceptual Contrast Algorithm。

新的颜色对比度算法-感知对比度算法APCA

更多请看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 中的新增)

新的颜色对比度算法-感知对比度算法APCA

edge

新的颜色对比度算法-感知对比度算法APCA

你使用过这个功能了吗?

点赞
收藏
评论区
推荐文章
Symbol卢 Symbol卢
4年前
ES11来了,不进来看看嘛
前言ES2020(ES11)是ECMAScript对应2020年的版本。这个版本不像ES6(ES2015)那样包含大量新特性。但也添加了许多有趣且有用的特性。本文以简单的代码示例来介绍ES2020新特性。这样,你可以很快理解这些新功能,而不需要多么复杂的解释,好了,废话不多说我们进入正文🔛私有变量类的主要作用之一是将我们的代码包含在可重用的
kenx kenx
3年前
Java8 新特性 Stream Api 之集合遍历
前言随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8依然是持续免费更新使用的,后面版本也更新很快眼花缭乱,所以稳定使用还是用java8把既可以体验到新功能,又不需要,烦恼升级带来的bug新特性比较新的的特性就是流Stream,和lambda表达式图上
Wesley13 Wesley13
3年前
Java JDK 1.7 和 JDK 1.8 新特性
引言  本文主要介绍JavaJDK中1.7和1.8的新特性。JDK1.7新特性  1.switch可以接受String类型;publicclassSwitch{publicvoidtest(Stringstr){switch(str){
Stella981 Stella981
3年前
Sirikit 和 Shortcuts 的新特性
作者:NotFound9,iOS/后端开发者,Github1.5KStar数的开源后端技术总结项目interviewGuide作者,微信公众号《大厂面试》号主Sessions:https://developer.apple.com/videos/play/wwdc2020/10068/推荐语快速浏
Wesley13 Wesley13
3年前
JAVA NIO non
Java自1.4以后,加入了新IO特性,NIO.号称newIO.NIO带来了nonblocking特性.这篇文章主要讲的是如何使用NIO的网络新特性,来构建高性能非阻塞并发服务器.文章基于个人理解,我也来搞搞NIO.,求指正.在NIO之前服务器还是在使用阻塞式的javasocket.以Tomcat最新版
Stella981 Stella981
3年前
ES2019 中的 JavaScript 新特性
JavaScript从成立之初就已经走了很长一段路,提供了许多新的功能,这些功能是专门设计来使该语言更加人性化和提升效率。以下是我最近发现的一些有趣的JavaScript新增内容。其中一些功能已在Node,Chrome,Firefox和Safari中可用,而其他功能仍处于建议阶段。Optionalchaining(可选链)
Wesley13 Wesley13
3年前
2020最佳AI新基建年度榜:九号公司荣获最佳机器人智能驾驶奖
!(https://articlefd.zolimg.com.cn/t_s640x2000/g6/M00/03/05/ChMkKl_QoFIWaCXAACo22TWRIcAAGfwwPRa0oAAKjz972.jpg)2020年是新基建元年,AI、5G、大数据、新能源等成为新基建的关键词。近日雷锋网正式公布【2020最佳AI新基建年度榜】,该榜
Stella981 Stella981
3年前
Objective—C语言的新魅力——Nullability、泛型集合与类型延拓
Objective—C语言的新魅力一、引言        在Xcode7中,iOS9的SDK已经全面兼容了ObjectiveC的一些新特性和新功能。这些功能都只作用于编译期,对程序的运行并没有影响,因此,它可以很好的向下进行兼容,无缝的衔接低版本的iOS系统,那么这些特性有什么样的用处呢,作为开发者,我保
Stella981 Stella981
3年前
OneFlow CHANGELOG V0.3.2
ChangelogOneFlow发布了新版本0.3.2,这个版本以及之前的0.3.1版本都是大版本0.3.0的minor版本,所以在此一并介绍。在这个版本中,引入了大量性能优化、加入了不少新的feature,率先支持了CUDA11.1。主要新功能一览支持亚线性内存优化
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
容器控 (ContainerLover)
容器控 (ContainerLover)
Lv1
2015,请善待爱我的人和我爱的人.
文章
5
粉丝
0
获赞
0