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

标签 html browser background-color

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

例如,bgcolor="chucknorris" 产生一个红色背景:

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

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

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

这适用于各种浏览器和平台。这是怎么回事?

最佳答案

这是 Netscape 的遗留物天数:

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.

来自博文 A little rant about Microsoft Internet Explorer's color parsing 非常详细地介绍了它,包括不同长度的颜色值等。

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

  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" 时,我最初遇到了这个问题,而且结果是棕色的。

关于html - 为什么 HTML 认为 “chucknorris” 是一种颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57973209/

相关文章:

javascript - 将字符串从 HTML 发送到 jQuery 时,jQuery 删除撇号后的字符

browser - Firefox Browser.get BrowserForTab 但没有 Browser.getTabFor 浏览器?

c# - WPF中如何获取webbrowser控件输入框的值?

html - 使用 CSS 将文本颜色设置为红色背景上的白色和白色背景上的黑色文本颜色

html - Instagram Feed 的图像翻转

html - 基本 CSS/布局问题 - 动态列?

javascript - 覆盖为真时隐藏滚动条

java - 在 Servlet 中读取客户端证书

css - 这是浏览器错误吗?具有背景颜色的变量继承

android - 两种不同颜色的布局