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

Обложка: Цвет Чака Норриса в HTML
1

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

<body bgcolor="chucknorris">Типичный программист</body>

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

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

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

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

Что происходит вообще Что происходит с Чаком (chucknorris)
Все некорректные 16-ричные символы будут заменены нулями c00c0000000
Теперь сделаем длину этой строки кратной трем, дописав справа нули c00c 0000 0000
Разделим на три равные группы, каждая из которых будет задавать один из цветов RGB RGB (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.

Что думаете?