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

在HTML中作为背景颜色输入时,某些随机字符串如何产生颜色? 例如:

<body bgcolor="chucknorris"> test </body>

这是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>

    我很抱歉不同意,但根据@Yuhong Bao发布的遗留色彩值的解析规则, chucknorris并不等同于#CC0000 ,而是等同于#C00000 ,这是一种非常相似但略有不同的红色。 我使用Firefox ColorZilla插件来验证这一点。

    规则规定:

  • 通过添加0来使字符串的长度为3的倍数: chucknorris0
  • 将字符串分成3个等长字符串: chuc knor ris0
  • 将每个字符串截断为2个字符: ch kn ri
  • 保持十六进制值,并在必要时加上0: C0 00 00
  • 我能够使用这些规则来正确解释以下字符串:

  • LuckyCharms
  • Luck
  • LuckBeALady
  • LuckBeALadyTonight
  • GangnamStyle

  • 更新:原来那些说CCMN颜色的#CC0000已经编辑了他们的答案,以包含更正。


    大多数浏览器会忽略颜色字符串中的任何非十六进制值,用非零十六进制数字替换零。

    ChuCknorris翻译为c00c0000000 。 此时,浏览器会将字符串分成三个相等的部分,表示红色,绿色和蓝色值: c00c 0000 0000 。 每个部分中的额外位将被忽略,这使最终结果#c00000是一种微红的颜色。

    请注意,这不适用于遵循CSS标准的CSS颜色分析。

    <p><font color='chucknorris'>Redish</font></p>
    <p><font color='#c00000'>Same as above</font></p>
    <p><span style="color: chucknorris">Black</span></p>
    链接地址: http://www.djcxy.com/p/31.html

    上一篇: Why does HTML think “chucknorris” is a color?

    下一篇: Why can't (or doesn't) the compiler optimize a predictable addition loop into a multiplication?