为什么字体颜色属性中的怪异东西会产生真实的颜色?

Jer*_*ell 54 html fonts colors

可能重复:
为什么HTML认为"chucknorris"是一种颜色?

我正在教一个小伙伴.高中/高中网络编程课,我们开始使用简单的元素和属性,如字体和颜色,然后再转到CSS.我知道颜色已被弃用,HTML5中不包含字体,但出于教学目的,我发现从简单的HTML标签开始并逐步使用CSS非常方便.在课程的第一周,学生可以在页面上更改颜色,从而获得很多乐趣.(我也在第1周教他们选框和眨眼,但告诉他们如果他们再次使用它们,他们将失去分数).

其中一名学生开始用颜色属性值中的奇怪事物提交作业,如"Skittles"或"Spiderman".我开始尝试使用它并发现几乎任何你在font标签上的color =""属性中都会产生某种颜色.并且看起来在IE,Firefox,Chrome,Opera和Safari的最新版本中颜色是一致的.

我发现将"LuckyCharms"作为CSS颜色放入不起作用.它似乎只适用于HTML属性中预期颜色的位置,例如font color ="LuckyCharms"或body bgcolor ="LuckyCharms".

我试图向我的班级解释为什么会发生这种情况,到目前为止我还没有理解它,或者谷歌给出了一个好的答案.它似乎被解释为颜色代码,但我无法理解如何.

更新:经过一些试验和错误,我已经确定了一个5步算法(使用提供的链接)将几乎任何字符串转换为相应的十六进制颜色.我将在此提供算法,以便对未来访问者进行启发:

  1. 将每个非十六进制字符更改为0.
  2. 将0添加到字符串,直到其长度为3的倍数.
  3. 将字符串分成3个相等的部分.
  4. 当子字符串的长度大于2,并且所有三个子字符串都以0开头时,从每个字符串中删除前导0.
  5. 如果子字符串的长度仍大于2,则将每个子字符串截断为2个字符.

就是这样,将子串放在一起,你就得到了十六进制颜色代码.我用大约20个不同的样本验证了这个算法,并使用Firefox ColorZilla附加颜色选择器比较了结果.

请注意,在这种情况下,规则ARE确实在其中一个答案中指定的链接中明确说明,并且将被所有浏览器遵守.所以你可以指望在任何浏览器中工作(你真的想要使用有趣的颜色名称).

Que*_*tin 29

HTML 5规范包括用于解析传统颜色的规则.

它们相当长,旨在使浏览器能够一致地处理破坏的代码.


Mad*_*iha 5

很有意思。似乎浏览器会解释它可以(af)的任何字符,如果不能匹配,则将其余字符保留为 0。例如:

Spiderman
 00DE0 A
Run Code Online (Sandbox Code Playgroud)

不过仍然需要更多的实验。

  • @trejder 是的,您忽略了这个答案是在 2 年前(几乎完全一样)写的,当时我没有 61.5k。 (4认同)