引号的HTML解释:```vs`“`

时间:2013-11-30 00:21:33

标签: html

有人可以解释这段代码生成绿色文本的原因:

<font color=”red”>Red, anyone?</font>

http://jsfiddle.net/WGSNX/7/。我假设它与第一个符号有关,但为什么HTML会以不同的方式解析"

5 个答案:

答案 0 :(得分:6)

很简单:   =“红色”   = 0red0(“不是ascii所以make 0)   = 00ed0(r不是十六进制所以使0为0)   = 00ed00(pad)

#00ed00是绿色

答案 1 :(得分:4)

我怀疑转换正在发生:

浏览器假设”red”是三个十六进制值,每个2个字符长: ["”r", "ed", "”"]

”r都无效,因此它们会投放到00,因此您最终会获得颜色:

#00ed00

哪个是绿色。

答案 2 :(得分:4)

字符“(U + 201D RIGHT DOUBLE QUOTATION MARK)与字符”(U + 0022 QUOTATION MARK)非常不同。后者被定义为HTML中的属性值分隔符;前者没有特别的意义HTML,它只是另一个数据字符。

因此,指定的属性值为”red”',包含右双引号,总共五个字符。它当然是无效的颜色值。浏览器应用的错误恢复,以及HTML5中标准化的错误,参见HTML5 CR,条款2.4.6 Colors,是任何不是十六进制数字的字符都被数字0替换,然后如果长度为string不是三的倍数,附加0位数就可以了。首先,浏览器会将”red”转换为00ed0,然后附加0以获取绿色00ed00。然后将其视为#前缀。

如果您使用例如Chrome中的开发人员工具(F12)用于检查元素,您会看到font元素的样式具有color: rgb(0, 237, 0);,这是#00ed00的替代符号。在Firefox中,使用Firebug,您会将其视为#00ED00

答案 3 :(得分:1)

我不认为符号对HTML有意义。尝试使用"

答案 4 :(得分:0)

如果颜色值不等于“红色”,“蓝色”等关键字,则浏览器假设该值为三个十六进制值,每个2个字符长为约翰霍恩斯比说。 所有无效字符都为0。 如果颜色值长度小于6,则最后将附加零。