为什么HTML认为“chucknorris”是一种颜色?

为什么某些随机字符串在HTML中作为背景色输入时会产生颜色

例如:

<车身bgcolor=“chucknorris”>测试&lt/车身&gt

…在所有浏览器和平台上生成一个红色背景的文档

另一方面,chucknorr产生一个黄色背景

这是怎么回事

这是网景时代的遗留问题:

缺少的数字被视为0[…]。不正确的数字仅解释为0。例如,值#f0f0、f0f0、F0F0F、#fxfx和fxfx都是相同的

这是一篇关于Microsoft Internet Explorer颜色解析的小文章,内容非常详细,包括颜色值的不同长度等

如果我们依次应用博客文章中的规则,我们会得到以下结果:

  1. 将所有非有效十六进制字符替换为0:

    chucknorris变为C00C00000000

  2. 填充到可被3(11)整除的下一个字符总数→ 12) :

    c00c 0000
    
  3. 分成三个相等的组,每个组分代表RGB颜色的相应颜色组分:

    RGB(c00c,0000,0000)

  4. 将每个参数从右向下截断为两个字符

最后得出以下结果:

RGB(c0,00,00)=#C00000或RGB(192,0,0)

下面的示例演示了bgcolor属性的作用,以生成此“惊人”色样:

<表>
<tr>
<td bgcolor=“chucknorris”cellpadding=“8”width=“100”align=“center”>查克·诺里斯&lt/td>
<td bgcolor=“mrt”cellpadding=“8”width=“100”align=“center”style=“color:#ffffff”>T&lt/td>
<td bgcolor=“ninjaturtle”cellpadding=“8”width=“100”align=“center”style=“color:#ffffff”>忍者龟&lt/td>
&lt/tr>
<tr>
<td bgcolor=“sick”cellpadding=“8”width=“100”align=“center”>病态&lt/td>
<td bgcolor=“crap”cellpadding=“8”width=“100”align=“center”>废话&lt/td>
<td bgcolor=“grass”cellpadding=“8”width=“100”align=“center”>草&lt/td>
&lt/tr>
&lt/表&gt

这也回答了问题的另一部分:为什么bgcolor="“查克诺尔”产生黄色?如果我们应用规则,字符串是:

C00C000000=>c00 c00 000=>C0C000[RGB(192,192,0)]

它呈现出淡黄色和金黄色。由于字符串以9个字符开始,所以这次我们保留第二个“C”,因此它最终会成为最终的颜色值

当有人指出你可以做color="废话然后,嗯,结果是棕色的

发表评论