猿问

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

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

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

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

.生成一个具有红色背景跨所有浏览器和平台。

有趣的是chucknorri也会产生红色背景,chucknorr产生黄色背景。

这里发生了什么事?


凤凰求蛊
浏览 484回答 3
3回答

蝴蝶不菲

这是网景时代的一个支撑:缺失数字被视为0[.]。不正确的数字被简单地解释为0。例如,#F0F0F0、F0F0F、#FxFxFx和FxFxFx的值都是相同的。这是来自博客的文章对MicrosoftInternetExplorer颜色解析的一点不满它非常详细,包括不同长度的颜色值等。如果我们从博客文章中依次应用这些规则,我们将得到以下信息:用0替换所有无效的十六进制字符chucknorris&nbsp;becomes&nbsp;c00c0000000移至下一个可被3(11->12)整除的字符总数。c00c&nbsp;0000&nbsp;0000分成三个相等的组,每个分量代表RGB颜色的对应颜色组:RGB&nbsp;(c00c,&nbsp;0000,&nbsp;0000)将每个参数从右截断为两个字符其结果如下:RGB&nbsp;(c0,&nbsp;00,&nbsp;00)&nbsp;=&nbsp;#C00000&nbsp;or&nbsp;RGB(192,&nbsp;0,&nbsp;0)下面是一个演示bgcolor属性在行动中,产生这个“令人惊奇的”颜色样本:</table>这也回答了问题的另一部分:为什么bgcolor="chucknorr"生产黄色?如果我们应用这些规则,字符串是:c00c00000&nbsp;=>&nbsp;c00&nbsp;c00&nbsp;000&nbsp;=>&nbsp;c0&nbsp;c0&nbsp;00&nbsp;[RGB(192,&nbsp;192,&nbsp;0)]这是一种浅黄色的金色。由于字符串以9个字符开始,所以这一次我们保持第二个C,因此它以最后的颜色值结束。我最初遇到这种情况是因为有人指出你可以color="crap"它是棕色的。

慕桂英3389331

我很抱歉不同意,但是根据分析遗留颜色值的规则@余红宝,&nbsp;chucknorris不等于#CC0000,但更愿意#C00000一种非常相似但略有不同的红色色调。我用了火狐彩色Zilla加载项来验证这个。规则规定:通过添加0,使字符串的长度为3的倍数:chucknorris0将字符串分成三个等长字符串:chuc knor ris0将每个字符串截断为2个字符:ch kn ri保留十六进制值,并在必要时添加0:C0 00 00我能够使用这些规则正确地解释以下字符串:LuckyCharmsLuckLuckBeALadyLuckBeALadyTonightGangnamStyle最新情况:最初的回答者说颜色是#CC0000已经编辑了他们的答案,包括更正。

回首忆惘然

大多数浏览器都会忽略颜色字符串中的任何非十六进制值,将非十六进制数字替换为零。ChuCknorris翻译成c00c0000000..此时,浏览器将字符串分成三个相等的部分,指示红色,&nbsp;绿色和蓝色价值:c00c 0000 0000..每个部分中的额外位将被忽略,这将产生最终结果。#c00000这是一种略带红色的颜色。注意,这确实不应用于CSS颜色解析,它遵循CSS标准。<p><font&nbsp;color='chucknorris'>Redish</font></p><p><font&nbsp;color='#c00000'>Same&nbsp;as&nbsp;above</font></p><p> <span&nbsp;style="color:&nbsp;chucknorris">Black</span></p>
随时随地看视频慕课网APP
我要回答