当UI走查说页面色值错误时,先别急着检查代码

简介: 颜色一直是UI设计师们非常敏感的问题,为何屏幕会出现色差?工作中如何避免?

颜色一直是UI设计师们非常敏感的问题,我至今仍忘不了那天,一位萌新设计师在走查UI时,给我提了好几个Bug,大多是颜色有差异问题,我当时的第一反应是去检查代码,排查了半天确认自己没有写错色值后,我就在想会不会是取色的问题?于是我做了个试验,在网页上设置一个背景色,然后用Chrome自带的取色器吸了一下这个背景色,结果差点令我怀疑人生:

image.png

仔细看这个吸出来的color数值和上面设置的并不相同,为什么屏幕取色会有误差?我第一反应是找台别的电脑试试,于是我把这个网页保存后发给几个同事一通测试,最终在一台Windows电脑上发现取色正常,而Mac电脑全军覆没。

尽管事实似乎已经指向了一个罪魁祸首,可疑虑没有在我心中消除。难道是苹果电脑的屏幕色彩有问题?屏幕也能影响到程序的事件?

要搞懂这些问题,首先得清楚,为什么会有色差?

色彩差异的原因

导致在不同设备上产生色彩差异的原因大致有以下几个因素:

  1. 系统色彩管理导致颜色差异
  2. 软件色彩管理模式不同导致的颜色差异
  3. 显示设备品质差异导致的颜色差异

毫无疑问,第三点是最容易理解的,但它的影响只是人眼看到的感受不同,对于屏幕取色不会有影响,那是不是其它两个因素导致的色差问题呢?

系统色彩管理导致色差

颜色一般会在显示屏上表现为RGB色(也就是三原色红,绿和蓝)或者是LSB/L(色相,饱和度和亮度)。

如果你把颜色从一种色彩空间转成另一个色彩空间,实际上,这个色彩空间会尽可能适配你要的颜色,让他们尽可能的在同一个位置(由于色彩空间的改变,其实转化后的颜色并不能完全一致)。也就是说这个RGB的数值会根据这个色彩空间的定义而做出改变,它并非是稳定的。

图片来源网络

现在我们就明白了,应该是Mac的系统色彩管理模式有问题,打开Mac的屏幕设置,我们看到描述文件这里默认的并不是标准的RGB模式:

image.png

如果我们要想屏幕取色值和我们预期的一致,应该把描述文件改为 sRGB IEC61966-2.1

image.png

软件色彩模式导致的色差

Chrome色彩配置

前面我们改变了系统的色彩配置,重启了谷歌浏览器取色就正常了:

image.png

这其实是因为谷歌浏览器默认的色彩配置是取用系统的配置,而软件也可以有自己的颜色配置,例如在谷歌浏览器中我们可以打开这个地址来修改颜色配置,这样就可以不用改动系统配置了:

chrome://flags/#force-color-profile

image.png

Sketch色彩配置

Sketch默认的色彩配置为“非托管”。非托管不会附加任何色彩配置属性,所以和谷歌浏览器一样呈现的颜色因系统配置产生差异,如果不主动设置的话。

Sketch中的颜色配置设定:

image.png

Photoshop色彩配置

Photoshop中的颜色配置设定:

设置颜色模式 创建文件时的色域选择
image.png image.png

结束

后来我才知道那天UI设计是请假了,他们找了个会PS的(不知道是平面还是运营)来走查UI,这才把我给坑了。不过这个事情也让我搞懂了屏幕色彩的问题,希望你永远不会遇到这种不专业的设计师,如果看完有所收获,不要忘记点个赞再走哟。

说了这么多,当UI妹子提出页面颜色有差异问题时,怎么办?自信一点(偷偷查下代码有没有写错),直接反问她是不是在RGB模式下取的色值,对方一脸懵逼怎么办?看完这篇文章,你还不知道应该怎么做吗?

image.png

相关文章
|
7月前
|
JavaScript 前端开发
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
68 0
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
|
7月前
|
机器学习/深度学习 人工智能 前端开发
机器学习PAI常见问题之web ui 项目启动后页面打不开如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
7月前
|
JavaScript 前端开发
vue element-ui分页插件 始终保持在页面底部样式
vue element-ui分页插件 始终保持在页面底部样式
277 0
|
7月前
|
存储 测试技术 UED
Qt中实现界面回放的艺术:从理论到代码“ (“The Art of Implementing UI Playback in Qt: From Theory to Code
Qt中实现界面回放的艺术:从理论到代码“ (“The Art of Implementing UI Playback in Qt: From Theory to Code
174 1
|
4月前
|
C# 开发者 设计模式
WPF开发者必读:命令模式应用秘籍,轻松简化UI与业务逻辑交互,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用开发中,命令模式是简化UI与业务逻辑交互的关键技术,通过将请求封装为对象,实现UI操作与业务逻辑分离,便于代码维护与扩展。本文介绍命令模式的概念及实现方法,包括使用`ICommand`接口、`RelayCommand`类及自定义命令等方式,并提供示例代码展示如何在项目中应用命令模式。
56 0
|
6月前
|
前端开发 JavaScript Java
SSMP整合案例第六步 在前端页面上利用axios和element-ui与后端交互实现增删改
SSMP整合案例第六步 在前端页面上利用axios和element-ui与后端交互实现增删改
49 1
|
5月前
|
安全 前端开发 数据安全/隐私保护
会员系统03-前台系统UI,利用页面展示大宗农产品价格走势曲线,添加银行卡,前还要进行实名认证,密码密文,隐私安全
会员系统03-前台系统UI,利用页面展示大宗农产品价格走势曲线,添加银行卡,前还要进行实名认证,密码密文,隐私安全
|
5月前
Element UI【详解】el-scrollbar 滚动条组件 —— 监听滚动条的滚动,跟随页面一起滚动,获取滚动距离,隐藏水平滚动条等
Element UI【详解】el-scrollbar 滚动条组件 —— 监听滚动条的滚动,跟随页面一起滚动,获取滚动距离,隐藏水平滚动条等
1249 0
|
6月前
|
机器学习/深度学习 移动开发 文字识别
视觉智能开放平台产品使用合集之h5页面使用人脸活体检测,是否需要自己开发UI
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
7月前
|
JavaScript
Nuxt3 实战 (四):安装 Nuxt UI 和配置 Typescript 类型检查
这篇文章介绍了在项目中安装和配置Nuxt UI以及TypeScript的步骤。作者在前言中提到考虑了AntDesignVue和Element-Plus,但最终选择了NuxtUI,因为它更适合年轻化的项目,并且与Nuxt兼容。安装Nuxt UI需要执行一系列命令,同时会自动安装一些相关模块。然后,可以在Nuxt应用中使用Nuxt UI的所有组件和可组合函数。此外,还介绍了如何添加图标库和配置TypeScript。
167 0
Nuxt3 实战 (四):安装 Nuxt UI 和配置 Typescript 类型检查