47

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

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

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

4

8 回答 8

49

六边形 - #RRGGBBAA

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

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

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

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

8 位数

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

示例 3
换句话说,表示与(略透明的蓝色)#0000ffcc相同的颜色。rgba(0, 0, 100%, 80%)

4 位数

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

在大多数情况下,Chrome 和 Firefox 已经开始支持这一点: 在此处输入图像描述

于 2016-09-27T06:57:33.997 回答
39

透明度是颜色本身之外的属性,也称为alpha组件。您不能将透明度编码为纯 RGB(代表红-绿-蓝通道),但您可以使用 RGBA 表示法,在其中一起定义颜色 + 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 */
}
于 2009-11-17T19:44:50.130 回答
34

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

您可以像这样在 CSS 中指定 RGBA:

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

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

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

可以在此处找到有关浏览器支持和解决方法的更多信息。

于 2009-11-17T19:47:34.503 回答
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 个第一个字符是透明度的十六进制值,其余六个是十六进制颜色。

于 2013-02-01T17:11:13.903 回答
3

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

于 2009-11-17T19:45:21.207 回答
1

很简单:没有颜色,没有不透明度:

rgba(0, 0, 0, 0);
于 2020-05-16T01:38:22.960 回答
-1

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

于 2017-09-22T14:46:06.780 回答
-5

我也在尝试提高透明度-也许您可以尝试将背景的值留空,例如

bgcolor=" "
于 2012-04-16T14:09:31.107 回答