0

我正在使用这个:css进度条

它很棒,我们几乎定制了每个方面。问题是,我真的很讨厌渐变,但它们是 rgba 值。

有谁知道,如何将渐变更改为十六进制值,以便我们完成样式。

(我们拥有的css)是:

background-color: #74d04c;
/* Webkit background stripes and gradient */
background: -webkit-gradient(linear, 0 0, 44 44, color-stop(0, rgba(255, 255, 255, 0.17)), color-stop(0.25, rgba(255, 255, 255, 0.17)), color-stop(0.26, rgba(255, 255, 255, 0)), color-stop(0.5, rgba(255, 255, 255, 0)), color-stop(0.51, rgba(255, 255, 255, 0.17)), color-stop(0.75, rgba(255, 255, 255, 0.17)), color-stop(0.76, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0))), -webkit-gradient(linear, left bottom, left top, color-stop(0, rgba(255, 255, 255, 0)), color-stop(1, rgba(255, 255, 255, 0.35))), #74d04c;


background: -moz-linear-gradient(rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 100%), #74d04c;
-moz-box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4), inset 0px -1px 1px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4), inset 0px -1px 1px rgba(0, 0, 0, 0.2);
-o-box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4), inset 0px -1px 1px rgba(0, 0, 0, 0.2);
box-shadow: inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4), inset 0px -1px 1px rgba(0, 0, 0, 0.2);
 /* Give it a higher contrast outline */
 border: 1px solid #4c8932;

我只是没有得到 rgb(所以想看看我们如何转换为 #hex 值)

即使是链接也可以。

干杯

4

2 回答 2

3

你的例子利用了透明度。用于定义透明颜色的 css3 规范使用 rgba(r,g,b,a)

使用 HEX 的渐变中有另一种语法:

rgba(255, 255, 255, 0.25) => #FFFFFF 25%

见: http: //gradients.glrzad.com/

此外,应该真正检查您“没有得到 rgb”的理由。也许您应该花一些时间来理解 RGB 是数字色彩中一个非常重要的概念。

于 2012-04-16T00:11:16.990 回答
1

通常的十六进制表示只是将红色、绿色和蓝色值转换为十六进制(以 16 为基数),每个字节。你255,255,255会是ffffff和 0,0,0 会是000000。虽然这些没有显示,但符号使用两个数字,排列为 rrggbb,因此(例如)rgb = 1,2,3 将转换为 010203。

编辑:如果您对命令行工具感到满意(并且可以访问 C 或 C++ 编译器),您可能会发现这样一种更简单的转换方法:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    if (argc != 4) {
        fprintf(stderr, "Usage: cvt_hex r g b");
        return EXIT_FAILURE;
    }

    int r = atoi(argv[1]);
    int g = atoi(argv[2]);
    int b = atoi(argv[3]);

    printf("%2.2x%2.2x%2.2x", r, g, b);
    return 0;
}

请注意:这不会在错误检查方面尝试太多,所以如果(例如)你给它一个大于 255 的值,它不会检测或警告你这个问题,只会产生一个结果不能正常工作。

于 2012-04-16T00:11:09.387 回答