2013-05-12 75 views
1

我想在CSS中使用的所有顏色列表的顏色,但他們似乎被儲存在一個基地16格式。我覺得這樣的事情可能會奏效,但它不會做我想做的,迭代通過在JavaScript

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

你是什麼意思,所有在CSS中使用的顏色?你爲什麼期望代碼能夠做你想做的事?如何描述你想要的內容,並展示你迄今爲止嘗試實現的目標。 – 2013-05-12 01:23:26

+0

實際上想要使用滑塊小部件。滑塊的每個增量都會將div更改爲新顏色。 – 2013-05-12 01:27:29

回答

2

在CSS 3使用的顏色包括每個紅色,綠色,藍色和Alpha通道的,我相信的8位是8位(但被定義爲十進制數,所以很難說)。可以將這些顏色表示爲rgbahsla。使用十六進制,您只能表示100%不透明的顏色。通過一種顏色的八位迭代是很容易的:

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

要遍歷所有的顏色可能是通過嵌套這個循環四個層次深,但是,讓你想在迭代什麼方向的一些假設它。也將是一個相當長的行動。在CSS

// 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(',') + ')'); 
      } 
     } 
    } 
} 
+0

的'了'部分是0和1之間 – Musa 2013-05-12 01:32:01

+0

@Musa完全正確的,愚蠢的我。 – kojiro 2013-05-12 01:33:01

+0

在RGBA中,alpha通道不一定有8位(與ARGB不同,但這是另一回事)。 – 2013-05-12 01:40:02

1

顏色通常可以通過紅,綠和藍的值(如0〜255之間的整數),並且有時爲透明度的α值進行說明。

如果您對alpha值不感興趣,可以用十六進制格式在CSS中編寫#RRGGBB格式的顏色。

如果我們忘記了我們使用分組爲紅,綠,藍,可以看出,我們正在寫0000000)和FFFFFF16777215)之間的數字。因此,您可以將每個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顏色,所以我建議儘量不要運行這樣一個循環,但你可以看到它是如何變成一個獨特的十六進制顏色範圍內的整數。

3

在JavaScript中,你可以使用「0X」一個號碼之前,使其十六進制和「0」,使之八。使用這種方法,這應該是最好的代碼。 這可能會導致瀏覽器崩潰,因爲在所有CSS中都有16,581,375種不同的可能的十六進制顏色。這比有兆字節(大約100萬)的字節數多,或者需要多少年才能破解17-小寫字母的密碼。

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