5

我想列出 css 中使用的所有颜色,但它们似乎以 16 进制格式存储。我认为这样的事情可能会起作用,但它并没有做我想要的,

for(x; x< 100; x++)
{
   color = x.toString(16);
}
4

3 回答 3

5

在 JavaScript 中,您可以在数字前使用“0x”将其设为十六进制,使用“0”将其设为八进制。使用这种方法,这应该是最好的代码。这可能会使您的 Web 浏览器崩溃,因为所有 CSS 中有 16,581,375 种可能的十六进制颜色。这比一兆字节(约 100 万)中的字节数或破解 17 个小写字母密码需要多少年还要多。

var colors = new Array();
for(col=0x0;col<=0xFFFFFF;col++) {
  colors.push("#" + col);
}
于 2013-05-12T02:18:53.690 回答
4

CSS 3 中使用的颜色包括红色、绿色、蓝色各 8 位,以及一个我认为是 8 位的 alpha 通道(但被定义为十进制数,因此更难分辨)。可以将这些颜色表示为rgbahsla。使用十六进制,您只能表示 100% 不透明的颜色。迭代一种颜色的八位很容易:

for (var i=0; i<256; i++) {
    var redChan = i;
}

遍历所有颜色可能是通过将此循环嵌套四层深,但这对您想要迭代的确切方向做出了一些假设。这也将是一个相当冗长的操作。

// This is not intended to be the best solution, just to demonstrate the basic algorithm.
for (var r=0; r<256; r++) {
    for (var g=0; g<256; g++) {
        for (var b=0; b<256; b++) {
            // Assume we have 8 bits of alpha to use.
            for (var a=0; a<256; a++) {
                console.log('rgba(' + [r,g,b,a/255].join(',') + ')');
            }
        }
    }
}
于 2013-05-12T01:24:17.677 回答
2

CSS 中的颜色通常由它们的红色、绿色和蓝色值(0-255 之间的整数)来描述,有时是透明度的 alpha 值。

如果您对 alpha 值不感兴趣,可以在 CSS 中以#RRGGBB十六进制格式编写颜色。

如果我们忘记了我们正在使用红色、绿色和蓝色的分组,可以看出我们在000000( 0) 和FFFFFF( 16777215) 之间写了一个数字。因此,您可以将每种 RGB 颜色描述为该范围内的整数。

var i = 0, colour;
for (; i < 16777216; ++i) { // this is a BIG loop, will freeze/crash a browser!
    colour = '#' + ('00000' + i.toString(16)).slice(-6); // pad to 6 digits
    // #000000
    // #000001
    // ... #000100 ...
    // #FFFFFE
    // #FFFFFF
}

上面的代码循环所有16777216颜色,所以我建议不要运行这样的循环,但你可以看到它如何将范围内的整数更改为唯一的十六进制颜色。

于 2013-05-12T02:03:11.210 回答