Css - расчет серого цвета - PullRequest
0 голосов
/ 10 марта 2012

Как разделить #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

В этом списке 12 цветов.(Проверьте sgi серые цвета здесь .)

Но что, если я хочу не 12, а 32 цвета?Как рассчитать их?Надеюсь теперь ты меня понимаешь:)

Ответы [ 5 ]

3 голосов
/ 10 марта 2012

# 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
...
2 голосов
/ 10 марта 2012

Да, это возможно, просто разделите 255 на x, и тогда вы получите шаг.

Генератор в Ruby:

def gray_generator(steps)
  step = 255/steps
  ret = []
  steps.times { |i| ret << (step*i).to_s(16) * 3 }
  return ret
end
1 голос
/ 10 марта 2012

Если вам нужно X серых в диапазоне от # 000000 (черный) до #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);
}

Обратите внимание, что вы должны умножить 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
1 голос
/ 10 марта 2012

Пока все три значения (RGB) равны, они серые

1 голос
/ 10 марта 2012

На самом деле вам просто нужно разделить 255 (DEC) на х частей.Затем вы передаете эти числа в шестнадцатеричные числа, давайте назовем один из этих чисел 0xC4.Наконец, вам просто нужно сделать это:

    .whatever { background-color: #C4C4C4; }

Вот как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...