十六进制颜色:“透明”的数字表示?

Hex colors: Numeric representation for "transparent"?

提问人:Pekka 提问时间:11/18/2009 最后编辑:Jon SeigelPekka 更新时间:4/9/2021 访问量:388633

问:

我正在构建一个网络 CMS,用户可以在其中为某些网站元素选择颜色。 我想将所有颜色值转换为十六进制,以避免任何进一步的格式麻烦(“rgb(x,y,z)”或命名颜色)。我为此找到了一个很好的 JS 库。

我唯一不能进入十六进制的是“透明”。在显式声明一个元素是透明的时,我需要这个,根据我的经验,这可能与根本不定义任何值不同。

有谁知道这是否可以变成某种数字形式?我是否必须将所有处理实例设置为接受十六进制值“透明”?我想不出其他办法。

CSS 颜色 透明度 RGB

评论


答:

45赞 Seb 11/18/2009 #1

透明度是颜色本身之外的属性,也称为组件。您不能将透明度编码为纯 RGB(代表红-绿-蓝通道),但可以使用 RGBA 表示法,其中将颜色 + alpha 通道一起定义:alpha

color: rgba(255, 0, 0, 0.5); /* red at 50% opacity */

如果您想要“透明”,只需将最后一个数字设置为 0,而不考虑颜色。即使颜色部分分别设置为 100% 红色、绿色和蓝色,以下所有结果都会导致“透明”:

color: rgba(255, 0, 0, 0); /* transparent */
color: rgba(0, 255, 0, 0); /* transparent */
color: rgba(0, 0, 255, 0); /* transparent */

现在所有主流浏览器都支持 HEXA 表示法(或 RRGGBBAA),它与 RGBA 几乎相同,但使用十六进制表示法而不是十进制表示法:

color: #FF000080; /* red at 50% opacity */

此外,如果您只想要透明背景,最简单的方法是:

background: transparent;

您也可以玩 ,尽管这可能有点太多,并且在您的情况下会产生不必要的副作用:opacity

.half {
  opacity: 0.5;
  filter: alpha(opacity=50); /* needed to support IE, my sympathies if that's the case */
}
3赞 qid 11/18/2009 #2

有两种常见的方法:要么将特定颜色保留为“透明”,在这种情况下,您不能在图像中使用该颜色而不显示为透明,或者在红色、绿色和蓝色旁边定义第四个通道,称为“alpha”,表示半透明性/透明度。

36赞 fbrereto 11/18/2009 #3

Alpha 通道定义颜色的透明度值,因此只要 Alpha 值为 0,任何颜色都是 100% 透明的。通常,这种四通道颜色类型称为 RGBA。

您可以在 CSS 中指定 RGBA,如下所示:

div {
    background: rgba(200, 54, 54, 0.5); /* 50% transparent */
}

请注意,并非所有浏览器都支持 RGBA,在这种情况下,您可以指定回退

div {
    background: rgb(200, 54, 54); /* fallback */
    background: rgba(200, 54, 54, 0.5); /* 50% transparent */
}

有关浏览器支持和解决方法的更多信息,请参阅此处

-6赞 Row 4/16/2012 #4

我也在尝试透明度 - 也许你可以尝试将背景的值留空,例如类似

bgcolor=" "
5赞 Idealmind 2/2/2013 #5

您可以使用以下转换表:http://roselab.jhu.edu/~raj/MISC/hexdectxt.html

例如,如果你想要 60% 的透明度,你可以使用 3C(十六进制等价物)。

这对于 IE 背景渐变透明度很有用:

filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3C545454, endColorstr=#3C545454);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3C545454, endColorstr=#3C545454)";

其中 startColorstr 和 endColorstr:前 2 个字符是透明度的十六进制值,其余 6 个字符是十六进制颜色。

评论

0赞 Ralph David Abernathy 1/20/2016
链接对我来说已损坏:(
52赞 Jomar Sevillejo 9/27/2016 #6

六角 - #RRGGBBAA

有一种相对较新的透明度方法,它被称为 HEXA(HEX + Alpha)。它采用 8 位数字而不是 6 位数字。最后一对是 Alpha。所以成对的模式是 #RRGGBBAA。拥有 4 位数字也可以: #RGBA

我现在不确定它的浏览器支持,但您可以查看 DRAFT Docs 以获取更多信息。

§4.2. RGB十六进制表示法:#RRGGBB

a 的语法是一个标记,其值由 3、4、6 或 8 个十六进制数字组成。换句话说,十六进制颜色被写成哈希字符“#”,后跟一定数量的数字或字母(字母的大小写无关紧要 - 与 相同)。<hex-color><hash-token>0-9a-f#00ff00#00FF00

8 位数字

前 6 位数字的解释与 6 位表示法相同。最后一对数字(解释为十六进制数)指定颜色的 alpha 通道,其中表示完全透明的颜色,表示完全不透明的颜色。00ff

示例 3
换言之,表示与(略微透明的蓝色)相同的颜色。
#0000ffccrgba(0, 0, 100%, 80%)

4 位数字

这是 8 位符号的较短变体,以与 3 位符号相同的方式“扩展”。第一个数字被解释为十六进制数,指定颜色的红色通道,其中表示最小值,表示最大值。接下来的三位数字分别代表绿色、蓝色和 Alpha 通道。0f

在大多数情况下,Chrome 和 Firefox 已经开始支持此功能:enter image description here

评论

2赞 techie_28 3/20/2018
#0000ffcc似乎不被Microsoft Edge理解。
0赞 Gourav Yadav 9/22/2017 #7

使用以下十六进制代码表示透明文本颜色:#00FFFF00

1赞 epicrato 5/16/2020 #8

非常简单:无颜色,无不透明度:

rgba(0, 0, 0, 0);