Это пережиток дней Netscape:
Пропущенные цифры рассматриваются как 0 [...].Неправильная цифра просто интерпретируется как 0. Например, значения # F0F0F0, F0F0F0, F0F0F, #FxFxFx и FxFxFx одинаковы.
Это из сообщения в блоге Небольшая болтовня о разборе цвета в Microsoft Internet Explorer , который подробно описывает его, в том числе различную длину значений цвета и т. Д.
Если мы применяем правила по очереди из сообщения в блоге, мыполучить следующее:
Заменить все недопустимые шестнадцатеричные символы на 0 *
chucknorris becomes c00c0000000
Добавить к следующему общему количеству символов, кратному 3(11 -> 12)
c00c 0000 0000
Разделить на три равные группы, где каждый компонент представляет соответствующий компонент цвета цвета RGB:
RGB (c00c, 0000, 0000)
Усекать каждый аргумент справа вниз до двух символов
Что дает следующий результат:
RGB (c0, 00, 00) = #C00000 or RGB(192, 0, 0)
Вот пример, демонстрирующий bgcolor
атрибут в действии,чтобы создать этот «удивительный» образец цвета:
<table>
<tr>
<td bgcolor="chucknorris" cellpadding="8" width="100" align="center">chuck norris</td>
<td bgcolor="mrt" cellpadding="8" width="100" align="center" style="color:#ffffff">Mr T</td>
<td bgcolor="ninjaturtle" cellpadding="8" width="100" align="center" style="color:#ffffff">ninjaturtle</td>
</tr>
<tr>
<td bgcolor="sick" cellpadding="8" width="100" align="center">sick</td>
<td bgcolor="crap" cellpadding="8" width="100" align="center">crap</td>
<td bgcolor="grass" cellpadding="8" width="100" align="center">grass</td>
</tr>
</table>
Это также отвечает на другую часть вопроса;почему bgcolor="chucknorr"
дает желтый цвет?Хорошо, если мы применим правила, строка будет выглядеть так:
c00c00000 => c00 c00 000 => c0 c0 00 [RGB(192, 192, 0)]
, которая дает светло-желтое золото.Поскольку строка начинается с 9 символов, мы сохраняем второй символ C на этот раз, следовательно, он заканчивается в конечном значении цвета.
Я первоначально столкнулся с этим, когда кто-то указал, что вы можете сделать color="crap"
, и, хорошополучается коричневый.