Это связано с цветовыми кодами CSS:
Для шестнадцатеричного кода мы можем представить 16 777 216 цветов от # 000000 до # FFFFFF
В соответствии со спецификациями W3C, действительные проценты RGB соответствуют диапазону от (От 0,0% до 100,0%), что дает вам 1 003 003 001 цветовых комбинаций.(1001 ^ 3)
В соответствии со спецификациями:
Значения за пределами гаммы устройства должны быть обрезаны или отображены в гамме, когда гамма известна: красная, зеленая исиние значения должны быть изменены, чтобы попасть в диапазон, поддерживаемый устройством.Пользовательские агенты могут выполнять более качественное отображение цветов из одной гаммы в другую.Для типичного монитора с ЭЛТ, чья гамма устройств такая же, как у sRGB, четыре приведенных ниже правила эквивалентны:
Я сомневаюсь, действительно ли браузеры могут отображать все эти значения.(но если они это сделают, пожалуйста, сообщите мне и проигнорируйте оставшуюся часть этого поста)
Я предполагаю, что есть некоторое сопоставление от rgb (процент) до гекса.(но опять же, я не совсем уверен, как это работает)
В идеале я хотел бы выяснить функцию rgb (процентное соотношение) -> HEX
Если бы мне пришлось угадывать, вероятно, это было бы одноиз них 3.
1) Округлить до ближайшего HEX
2) CEIL до ближайшего HEX
3) ПОЛ до ближайшего HEX
ПроблемаМне нужно быть точным в отображении, и я понятия не имею, где искать.Мои глаза не могут различить цвет на этом уровне, но, возможно, есть какой-то умный способ проверить каждый из этих 3.
Это также может зависеть от браузера.Можно ли это проверить?
РЕДАКТИРОВАТЬ:
Firefox seems to round from empirical testing.
РЕДАКТИРОВАТЬ:
Я просматриваю исходный код Firefoxпрямо сейчас,
nsColor.h
// A color is a 32 bit unsigned integer with four components: R, G, B
// and A.
typedef PRUint32 nscolor;
Кажется, в Fiefox есть место только для 255 значений для каждого R, G и B. Подсказка, что округление может быть ответом, но, возможно, кое-что делается с альфа-каналом.