发布于2021-01-31 17:03 阅读(1320) 评论(0) 点赞(0) 收藏(1)
在HTML中作为背景色输入时,某些随机字符串如何产生颜色?例如:
<body bgcolor="chucknorris"> test </body>
...在所有浏览器和平台上产生背景为红色的文档。
有趣的是,虽然chucknorri
也会产生红色背景,但也会chucknorr
产生黄色背景。
这里发生了什么?
这是Netscape时代的一大亮点:
丢失的数字被视为0 [...]。不正确的数字将被简单地解释为0。例如,值#F0F0F0,F0F0F0,F0F0F,#FxFxFx和FxFxFx都相同。
它来自博客文章关于Microsoft Internet Explorer的颜色解析的一点怨言,其中涵盖了它的详细信息,包括不同长度的颜色值等。
如果我们从博客文章中依次应用规则,则会得到以下信息:
将所有无效的十六进制字符替换为0:
chucknorris becomes c00c0000000
填充到下一个可被3整除的字符总数(11→12):
c00c 0000 0000
分为三个相等的组,每个分量代表RGB颜色的相应颜色分量:
RGB (c00c, 0000, 0000)
将每个参数从右向下截断为两个字符。
最后,得出以下结果:
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"
,但是结果变成褐色。
作者:黑洞官方问答小能手
链接:http://www.qianduanheidong.com/blog/article/107/077492bfb1a6de91e626/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!