CSS中RGB颜色值使用十六进制超过十进制是否有充分的理由?

e10*_*100 59 css rgb hex colors

rgb(255,255,255)自CSS1以来,符号已经可用.但#ffffff似乎更受欢迎.

显然它稍微紧凑一些.我知道十六进制与底层字节关系更密切,并且理解对这些值进行算术会有优势,但这不是你要用CSS做的事情.

颜色值往往是由设计师(比如我自己)发起的,他们在其他任何地方都不会遇到十六进制表示法,并且更熟悉十进制表示法,这是在他们使用的应用程序中指定颜色的主要方式 - 实际上我有遇到了不少人,他们没有意识到给定的十六进制值如何分解为RGB组件,并假设它根本不与颜色直接相关,如Pantone颜色系统参考(例如PMS432).

那么,有什么理由不使用小数?

ede*_*ett 33

十六进制值更容易从您喜欢的图像编辑器中复制和粘贴.

使用Javascript更容易操作RGB值.

(我最喜欢的Hex颜色值是#EDEDED,我们为参与赛车运动的客户制作的网站的背景颜色为#F1F1F1 :-)

埃德.


WCW*_*din 20

值得注意的是,如果要输入RGBA值,则不支持十六进制表示法; 即,你不能用#FFFFFFff伪造它.事实上,alpha值必须是介于0.0和1.0之间的数字.(查看此页面以获取浏览器支持 - 一如既往,IE在这里处于领先地位.;))

HSL和HSLA颜色支持 - 非常设计友好 - 也提供与RGB()风格类似的语法.如果设计人员在同一样式表中使用两种类型的颜色值,他们可能会选择十进制值而非十六进制代码以保持一致性.

  • CSS 颜色模块级别 4 草案规范添加了 8 位十六进制表示法 #RRGGBBAA 和 #RGBA。据 [caniuse](https://caniuse.com/#search=rrggbbaa) 统计,76% 的浏览器支持这种表示法(截至 2018 年 9 月),目前 IE 或 Edge 尚不支持,因此不建议使用。 .. 然而。 (2认同)

jam*_*row 8

我认为这就是你习惯的.如果您已经习惯了HTML,那么您可能会使用HEX,因为它只是在HTML中使用了很多.如果您来自设计背景,使用Photoshop/Corel/PaintShopPro等,那么您可能习惯使用RGB符号 - 尽管如今,很多程序也包含了HEX值字段.

如上所述,RGBA可能是使用RGB符号 - 一致性的原因.

虽然,我认为这也取决于场景.如果您对两者都感到满意,您可能只需在它们之间切换:#fff输入比输入容易得多rgb(255,255,255).

另一个问题是为什么人们会说#fff而不是White(假设大多数浏览器都支持这个关键字).

这一切都是偏好和易读性的问题 - 如果你要维护一个巨大的CSS文件,能够查看颜色值并知道它是什么颜色,这是一个非常好的优势.更有利的是使用像LESSSass这样的东西来为CSS添加一种可编程性 - 例如允许常量.所以不要说:

#title { color: #abcdef; }
Run Code Online (Sandbox Code Playgroud)

您可以使用LESS执行以下操作:

@base-color: #abcdef;

#title { color: @base-color; }
Run Code Online (Sandbox Code Playgroud)

维护CSS变得不那么重要了.

如果您担心浏览器的性能会导致其结果,那么这也可能是您选择的另一个因素.

总而言之,它归结为:

  • 熟悉
  • 偏爱
  • 可维护性
  • 性能


Gre*_*reg 6

传统上,HTML总是使用十六进制颜色,因此已经转移到CSS中.认为<font color="#ffffff">


Bil*_*ard 6

正如你所提到的,主要原因可能是紧凑性.#ffffff甚至可以进一步缩短到#fff速记符号.

另一个可能的原因是,通过保存浏览器转换rgb符号的麻烦,可以感觉到性能提升.

  • 有一种感觉到的性能差异?我对您的评论进行了双重评估,以检查它是否是在1991年之前编写的.这是基于任何数据吗? (4认同)

chr*_*web 6

我总是使用十六进制,但今天我更喜欢将我的值设置为:

rgb(82, 110, 188)
Run Code Online (Sandbox Code Playgroud)

在我的css文件中,所以每当我想添加不透明度时,我只需要将rgb重命名为rgba并添加不透明度值.优点是我不必在添加不透明度之前将十六进制值转换为rgb:

rgba(82, 110, 188, 0.5)
Run Code Online (Sandbox Code Playgroud)

  • 在Sass中,您仍然可以使用HEX值并将它们与alpha结合使用.例如:`.container {background:rgba(#369,.2); }`.这是**[JSFiddle中的演示](http://jsfiddle.net/rzea/k1ferbLq/)**. (8认同)

Aar*_*lla 5

CSS 是由软件开发人员而不是设计师发明的。软件开发人员生活和呼吸十六进制。从我过去的 C64 时代开始,我仍然可以不假思索地阅读大多数十六进制数字。A9,有人吗?


Kel*_*net 1

除了个人喜好之外,没有任何正当理由。