HTML に「Chuck Norris カラー」がある?
「HTML で ChuckNorris (チャック・ノリス) ってカラー名が使えるんだけどなに?」という StackOverflow の質問があった。
<body bgcolor="chucknorris"> test </body>
これでどうも #c00000 と同じ色になるようだ。
不思議な挙動だが、こうなるのには理由があって、ちゃんと回答もあった。
It's a holdover from the Netscape days:
Missing digits are treated as 0[...]. An incorrect digit is simply interpreted as 0.
For example the values #F0F0F0, F0F0F0, F0F0F, #FxFxFx and FxFxFx are all the same.
つまり、大昔はネットスケープ時代にできた仕様で、カラーコードに不正な文字列が混じっているとそれを 0 と見なして解釈するようだ。
chucknorris becomes c00c0000000
chucknorris という文字列は c00c0000000 と見なされ、RGB で4桁ずつ区切られ、各4桁の右2桁がちぎられて、最終的に #c00000 というカラーコードとして扱われるのだ。
コレを応用すれば、abcdef のいずれかを含んだ単語を組み合わせて、「なぜかカラーリングされる不思議な HTML」が書ける。
文字列を3等分し、16進数で解釈できない文字が 0 扱いになることを考えながら単語を構成するの楽しい。
ちなみに CSS では使えない。HTML の bgcolor 属性とかでのみ使える、懐かしの技。