2012-03-10 98 views
0

如何划分#000000 - #ffffff间隔介绍X等份,得到X灰色?这可能吗?的CSS - 计算灰颜色

编辑: 更具体地说: 我想 '鸿沟' 的#000000 - #ffffff色彩范围是这样的:

  1. #000000
  2. #1E1E1E
  3. #282828
  4. #515151
  5. #5B5B5B
  6. #848484
  7. #8E8E8E
  8. #B7B7B7
  9. #C1C1C1
  10. #EAEAEA
  11. #F4F4F4
  12. #FFFFFF

在这份名单中有12种颜色。 (查看sgi灰色颜色here。)

但是,如果我不想要12色而是32色呢?如何计算它们? 我希望你现在能理解我:)

+0

林真的不知道你的意思,听起来很有趣寿:)你到底要什么? – 2012-03-10 16:41:55

回答

3

#000000实际上是RGB与R =#00,G =#00,B =#00

你得到一个灰色为R = G = B.

#00 - #FF叶你有256个可能的组合,所以如果你想排除白色和黑色(#000000和#FFFFFF)尝试是这样的:如果你想获得4个灰色

step = 256/(x + 2) 

所以,一步解析

step = 256/(4+2) = 256/6 = 43 

变换,从十进制到十六进制:

step_16 = 43_16 = #2B 

颜色现在是:

#2B2B2B 
#565656 
#818181 
... 
+0

我接受这个答案的详细解释。 – 2012-03-10 16:54:15

+0

很好的解释Niko,谢谢 – 2012-03-10 18:23:50

1

其实你只需要在x部分中划分255(DEC)。然后,您将这些数字传递给十六进制数字,让我们调用其中一个数字0xC4。最后,你只需要这样做:

.whatever { background-color: #C4C4C4; } 

这就是这样。

2

是的,它是可能的,只是除以x 255,那么你会得到的步骤。

发电机在Ruby中:

def gray_generator(steps) 
    step = 255/steps 
    ret = [] 
    steps.times { |i| ret << (step*i).to_s(16) * 3 } 
    return ret 
end 
1

只要所有三个值(RGB)都是平等的,他们是灰色

1

如果你需要的#000000(黑色)内的X灰色到#FFFFFF(白色)范围,则需要将255 /(x-1)分开,并将结果用作Reg,Green和Blue的步长值。要做到这一点在Java中:

int x = 12; 
for (int i = 0; i < x; i++) { 
    int c = (int) Math.round(i*255.0/(x-1)); 
    System.out.printf("%d. #%02x%02x%02x\n", i, c, c, c); 
} 

请注意,您必须用乘我(255.0 /(X-1)),然后舍入为一个整数,每次得到的每一步最接近的灰色。

上述方法产生(这是你自找的修改后的):

0. #000000 
1. #171717 
2. #2e2e2e 
3. #464646 
4. #5d5d5d 
5. #747474 
6. #8b8b8b 
7. #a2a2a2 
8. #b9b9b9 
9. #d1d1d1 
10. #e8e8e8 
11. #ffffff