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

例如,bgcolor="chucknorris"a 生产量a红色背景红背景:

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

相反,bgcolor="chucknorr"a 生产量a黄色背景:

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

各种浏览器和平台都存在这种情况。


当前回答

很抱歉我不同意 但根据传统颜色的分解规则由Yuhong Bao张贴, chucknorris 等于等于#CC0000,而是#C00000,一个非常相似但稍稍不同的红色色调。火狐 颜色Zilla 添加来核实这一点。

规则规定:

  • 将字符串设置为乘以 3 的乘以 0 的长度:chucknorris0
  • 将字符串分隔为三等长字符串:chuc knor ris0
  • 将每个字符串短短到两个字符 :ch kn ri
  • 保留十六进制值,必要时加上 0:C0 00 00

我利用这些规则正确解释了以下条件:

  • LuckyCharms
  • Luck
  • LuckBeALady
  • LuckBeALadyTonight
  • GangnamStyle

最初的回答者说颜色是#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>

  • 浏览器将尝试转换巧克力诺瑞斯chucknorris十六进制值。
  • c中唯一有效的十六ex 字符巧克力诺瑞斯chucknorris,值转换为:c00c00000000(无效的所有值为 0).
  • 浏览器然后将结果分为三类:Red = c00c, Green = 0000, Blue = 0000.
  • 由于 HTML 背景的有效十六进制值仅包含每个颜色类型的两位数字( ) 。r, g, b)))后的两位数从每组中截短,留下的RGB值为c00000是一个砖灰色的灰色灰色色。

与Twitter网站的延迟网网景天数 :

缺失的数字被作为 0[...] 处理。 不正确的数字被简单地解释为 0。 例如, 数值 # F0F0F0F0、 F0F0F0F0、 F0F0F、 # FxFxFxx和 FxFxFx都是相同的 。

是博客文章上写到的微软 Internet Explorer 的颜色解析包括不同颜色的长度等等。

如果我们在博客文章中适用规则,

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

    chucknorris becomes c00c0000000
    
  2. 切换为下个字符总数, 3 下个字符总数( 11 & 12) :

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

    RGB (c00c, 0000, 0000)
    
  4. 将每个参数从右下移到两个字符。

最后,得出以下结果:

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"然后,它从棕色出来。

很抱歉我不同意 但根据传统颜色的分解规则由Yuhong Bao张贴, chucknorris 等于等于#CC0000,而是#C00000,一个非常相似但稍稍不同的红色色调。火狐 颜色Zilla 添加来核实这一点。

规则规定:

  • 将字符串设置为乘以 3 的乘以 0 的长度:chucknorris0
  • 将字符串分隔为三等长字符串:chuc knor ris0
  • 将每个字符串短短到两个字符 :ch kn ri
  • 保留十六进制值,必要时加上 0:C0 00 00

我利用这些规则正确解释了以下条件:

  • LuckyCharms
  • Luck
  • LuckBeALady
  • LuckBeALadyTonight
  • GangnamStyle

最初的回答者说颜色是#CC0000其后编辑了答复,以列入更正。

浏览器正在试图转换chucknorris十六进制颜色代码,因为它不是一个有效的值。

  1. chucknorris,除c不是一个有效的十六进制值。
  2. 因此,它被转换为c00c00000000.
  3. 这分为3组,R G B(结尾处为0,如果不是3的倍数的话)
  4. 每个组中只选取两个字符,因为这是允许的。
  5. 终于变成# 千千万万 #红色的阴影

这似乎主要是与Internet 探索器歌剧院(12) 因为铬(31)和Firefox(26)都忽略了这一点。

P.S. 括号中的数字是我测试过的浏览器版本。

同样,拉伊尼坎特(印度恰克·诺里斯) 和黑色的阴影相反:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

在较轻的音符上

Chuck Norris不符合网络标准。 网络标准符合他的要求。 #BADA55