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
属性とかでのみ使える、懐かしの技。