为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

凤凰求蛊 2019-07-03 17:49:02
为什么HTML认为“ChuckNorris”是一种颜色?为什么某些随机字符串在HTML中作为背景色输入时会产生颜色?例如:<body bgcolor="chucknorris"> test </body>.生成一个具有红色背景跨所有浏览器和平台。有趣的是chucknorri也会产生红色背景,chucknorr产生黄色背景。这里发生了什么事?
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

这是网景时代的一个支撑:

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

这是来自博客的文章对MicrosoftInternetExplorer颜色解析的一点不满它非常详细,包括不同长度的颜色值等。

如果我们从博客文章中依次应用这些规则,我们将得到以下信息:

  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>

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

c00c00000 => c00 c00 000 => c0 c0 00 [RGB(192, 192, 0)]

这是一种浅黄色的金色。由于字符串以9个字符开始,所以这一次我们保持第二个C,因此它以最后的颜色值结束。

我最初遇到这种情况是因为有人指出你可以color="crap"它是棕色的。


查看完整回答
反对 回复 2019-07-03
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

我很抱歉不同意,但是根据分析遗留颜色值的规则@余红宝chucknorris不等于#CC0000,但更愿意#C00000一种非常相似但略有不同的红色色调。我用了火狐彩色Zilla加载项来验证这个。

规则规定:

  • 通过添加0,使字符串的长度为3的倍数:

    chucknorris0

  • 将字符串分成三个等长字符串:

    chuc knor ris0

  • 将每个字符串截断为2个字符:

    ch kn ri

  • 保留十六进制值,并在必要时添加0:

    C0 00 00

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

  • LuckyCharms

  • Luck

  • LuckBeALady

  • LuckBeALadyTonight

  • GangnamStyle


最新情况:最初的回答者说颜色是#CC0000已经编辑了他们的答案,包括更正。


查看完整回答
反对 回复 2019-07-03
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

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

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>


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 483 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信