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

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

上一篇 下一篇

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

例如,生成红色背景bgcolor="chucknorris"

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

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

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

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

分割线

网友回答:

很抱歉不同意,但根据包宇红发布的旧颜色值解析规则,并不等同于,而是等同于非常相似但略有不同的红色色调。我使用Firefox ColorZilla附加组件来验证这一点。chucknorris#CC0000#C00000

规则规定:

  • 通过添加 3 使字符串的长度是 0 的倍数:chucknorris0
  • 将字符串分成三个等长的字符串:chuc knor ris0
  • 将每个字符串截断为两个字符:ch kn ri
  • 保留十六进制值,并在必要时添加 0:C0 00 00

我能够使用这些规则来正确解释以下字符串:

  • LuckyCharms
  • Luck
  • LuckBeALady
  • LuckBeALadyTonight
  • GangnamStyle

说颜色#CC0000的原始回答者已经编辑了他们的答案以包括更正。

分割线

网友回答:

这是Netscape时代的遗留物:

缺少的数字被视为 0[…]。不正确的数字被简单地解释为 0。例如,值 #F0F0F0、F0F0F0、F0F0F、#FxFxFx 和 FxFxFx 都是相同的。

它来自博客文章 关于Microsoft 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"

分割线

网友回答:

原因是浏览器无法理解它,并试图以某种方式将其转换为它可以理解的内容,在这种情况下转换为十六进制值!…

chucknorris以十六进制中的识别字符开头,还将所有无法识别的字符转换为!c0

所以在十六进制格式中变成:,所有其他字符都成为并保持在它们所在的位置……chucknorrisc00c000000000c

现在他们被除以 3 表示(红色、绿色、蓝色)……RGBR: c00c, G: 0000, B:0000

但我们知道 RGB 的有效十六进制只有 2 个字符,这意味着R: c0, G: 00, B:00

所以真正的结果是:

bgcolor="#c00000";

我还在图像中添加了步骤作为您的快速参考:

Why does HTML think “chucknorris” is a colour?

模板简介:该模板名称为【为什么某些随机字符串在 HTML 中作为背景颜色输入时会产生颜色?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【HTML】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 271次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-08
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信图片 响应式 微信公众平台 自适应 单页式简历模板 微信素材 html5 微信模板 微信文章 企业网站
您可能会喜欢的其他模板