提问人:Pekka 提问时间:11/18/2009 最后编辑:Jon SeigelPekka 更新时间:4/9/2021 访问量:388633
十六进制颜色:“透明”的数字表示?
Hex colors: Numeric representation for "transparent"?
问:
我正在构建一个网络 CMS,用户可以在其中为某些网站元素选择颜色。 我想将所有颜色值转换为十六进制,以避免任何进一步的格式麻烦(“rgb(x,y,z)”或命名颜色)。我为此找到了一个很好的 JS 库。
我唯一不能进入十六进制的是“透明”。在显式声明一个元素是透明的时,我需要这个,根据我的经验,这可能与根本不定义任何值不同。
有谁知道这是否可以变成某种数字形式?我是否必须将所有处理实例设置为接受十六进制值或“透明”?我想不出其他办法。
答:
透明度是颜色本身之外的属性,也称为组件。您不能将透明度编码为纯 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 */
}
有两种常见的方法:要么将特定颜色保留为“透明”,在这种情况下,您不能在图像中使用该颜色而不显示为透明,或者在红色、绿色和蓝色旁边定义第四个通道,称为“alpha”,表示半透明性/透明度。
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 */
}
有关浏览器支持和解决方法的更多信息,请参阅此处。
我也在尝试透明度 - 也许你可以尝试将背景的值留空,例如类似
bgcolor=" "
您可以使用以下转换表: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 个字符是十六进制颜色。
评论
六角 - #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-9
a-f
#00ff00
#00FF00
8 位数字
前 6 位数字的解释与 6 位表示法相同。最后一对数字(解释为十六进制数)指定颜色的 alpha 通道,其中表示完全透明的颜色,表示完全不透明的颜色。
00
ff
示例 3
换言之,表示与(略微透明的蓝色)相同的颜色。#0000ffcc
rgba(0, 0, 100%, 80%)
4 位数字
这是 8 位符号的较短变体,以与 3 位符号相同的方式“扩展”。第一个数字被解释为十六进制数,指定颜色的红色通道,其中表示最小值,表示最大值。接下来的三位数字分别代表绿色、蓝色和 Alpha 通道。
0
f
在大多数情况下,Chrome 和 Firefox 已经开始支持此功能:
评论
#0000ffcc
似乎不被Microsoft Edge理解。
使用以下十六进制代码表示透明文本颜色:#00FFFF00
非常简单:无颜色,无不透明度:
rgba(0, 0, 0, 0);
评论