在 javascript 中迭代颜色

Mus*_*rge 5 javascript css loops colors

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

for(x; x< 100; x++)
{
   color = x.toString(16);
}
Run Code Online (Sandbox Code Playgroud)

Qvc*_*ool 5

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

var colors = new Array();
for(col=0x0;col<=0xFFFFFF;col++) {
  colors.push("#" + col);
}
Run Code Online (Sandbox Code Playgroud)


koj*_*iro 4

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

for (var i=0; i<256; i++) {
    var redChan = i;
}
Run Code Online (Sandbox Code Playgroud)

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

// 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(',') + ')');
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)