我正在构建一个网络 CMS,用户可以在其中为某些站点元素选择颜色。我想将所有颜色值转换为十六进制以避免任何进一步的格式化麻烦(“rgb(x,y,z)”或命名颜色)。我为此找到了一个很好的 JS 库。
我唯一无法进入十六进制的是“透明”。当明确声明一个元素为透明时,我需要这个,根据我的经验,这可能与根本不定义任何值不同。
有谁知道这是否可以变成某种数字形式?我是否必须设置所有处理实例以接受十六进制值或“透明”?我想不出别的办法。
我正在构建一个网络 CMS,用户可以在其中为某些站点元素选择颜色。我想将所有颜色值转换为十六进制以避免任何进一步的格式化麻烦(“rgb(x,y,z)”或命名颜色)。我为此找到了一个很好的 JS 库。
我唯一无法进入十六进制的是“透明”。当明确声明一个元素为透明时,我需要这个,根据我的经验,这可能与根本不定义任何值不同。
有谁知道这是否可以变成某种数字形式?我是否必须设置所有处理实例以接受十六进制值或“透明”?我想不出别的办法。
有一种相对较新的透明度方法,称为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 通道。
透明度是颜色本身之外的属性,也称为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 */
}
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 */
}
可以在此处找到有关浏览器支持和解决方法的更多信息。
您可以使用此转换表: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 个第一个字符是透明度的十六进制值,其余六个是十六进制颜色。
有两种常见的方法:要么将特定颜色保留为“透明”,在这种情况下,您不能在图像中使用该颜色而不使其看起来透明,或者在红色、绿色和蓝色旁边定义第四个通道,称为“alpha”表示半透明/透明。
很简单:没有颜色,没有不透明度:
rgba(0, 0, 0, 0);
对透明文本颜色使用以下十六进制代码:#00FFFF00
我也在尝试提高透明度-也许您可以尝试将背景的值留空,例如
bgcolor=" "