Css - 计算灰色

时间:2012-03-10 16:37:05

标签: css math

如何划分#000000 - #ffffff间隔介绍 x 相等的部分,以获得 x 灰色?这可能吗?

编辑: 进一步来说: 我希望“划分”#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
  13. 在此列表中有12种颜色。 (查看sgi灰色here。)

    但是如果我不想要12种颜色呢?怎么计算它们? 我希望你现在了解我:)。

5 个答案:

答案 0 :(得分:3)

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

R = G = B时会出现灰色。

#00 - #FF为您留下了256种可能的组合,所以如果您想排除白色和黑色(#000000和#FFFFFF),请尝试以下方法:

step = 256 / (x + 2)

因此,如果您想要获得4个灰色,则步骤将解析为

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

将其从十进制转换为十六进制:

step_16 = 43_16 = #2B

现在的颜色是:

#2B2B2B
#565656
#818181
...

答案 1 :(得分: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

答案 2 :(得分:1)

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

    .whatever { background-color: #C4C4C4; }

就是这样。

答案 3 :(得分:1)

只要所有三个值(RGB)相等,它们就是灰色

答案 4 :(得分:1)

如果您需要#000000(黑色)到#ffffff(白色)范围内的X灰色,则需要将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);
}

请注意,您必须将i乘以(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