Цвет Чака Норриса в HTML

Как HTML определяет, какой цвет задает строка? Например, цвет этой страницы:

будет красным для всех платформ и браузеров. Проверить можно здесь, на Fiddle. Забавно, что и chucknorri обозначает красный цвет, а вот chucknorr уже задает желтый.

Почему это происходит?

Это пережиток еще тех дней, когда самым популярным браузером был Netscape. Все пропущенные и некорректные разряды в строке, задающей, цвет, заменяются на 0. Так, #F0F0F0, F0F0F0, F0F0F, #FxFxFx и FxFxFx – это все один и тот же цвет.

Вот здесь можно найти описание этой схемы со всеми подробностями. Согласно описанному в этой статье, Чак пройдет следующую череду преобразований:

Что происходит вообщеЧто происходит с Чаком (chucknorris)
Все некорректные 16-ричные символы будут заменены нулямиc00c0000000
Теперь сделаем длину этой строки кратной трем, дописав справа нулиc00c 0000 0000
Разделим на три равные группы, каждая из которых будет задавать один из цветов RGBRGB (c00c, 0000, 0000)
Теперь каждое из чисел уменьшим до длины в два разрядаRGB (c0, 00, 00) = #C00000 или RGB(192, 0, 0)

 

Вот здесь представлены другие цвета, заданные нехитрыми словами.

Теперь аналогично посмотрим, почему chucknorr представляет собой желтый цвет. Цепочка будет иметь следующий вид: chucknorr → c00c00000 → c00 c00 000 → RGB(c0,c0,00) – это смесь темного красного и темного зеленого, т.е. золотой цвет. Т.е. здесь второй символ с не пропадает, т.к. изначальная длина строки кратна трем и он попадает в начало RGB-разряда.

Однако, если длина отдельного значения цвета RGB превышает 8, то преобразование происходит иначе: сначала длина уменьшается до восьми отбрасыванием символов слева, а потом уменьшается до двух отбрасыванием символов справа. Неожиданно, не правда ли?

Как указано в статье, все это происходит именно так в Internet Explorer. Но предполагается, что и в других браузерах происходит аналогично. В общем-то, такая ситуация вполне себе ожидаема, если понимать, что HTML выполняет все, что ему скажут, правда, если сказано неверно, то по-своему.

P.S. tproger соответствует черному цвету, а вот tproger.ru – темно-зеленому.

Источники: stackoverflow.comhabrahabr.ru.