【发布时间】:2020-06-13 08:11:38
【问题描述】:
我正在维护一个旧网站,并有机会接触旧版 HTML。所以我遇到了color属性的奇怪行为。
在下面的源码中,两个文字都是红色的:
p {
color: #ff0000;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>title</title>
</head>
<body>
<font color="#ff0000">
hello, world!
</font>
<p>
hello, world!
</p>
</body>
</html>
颜色代码由十六进制数字组成,(基本上)是 6 个字符。但是,color 属性和 color 属性在输入 6 个或更多字符的颜色代码时的行为不同。
p {
color: #ff0000abc;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<title>title</title>
</head>
<body>
<font color="#ff0000abc">
hello, world!
</font>
<p>
hello, world!
</p>
</body>
</html>
为什么会这样?color 属性在这里是如何工作的?我还是要使用color属性,所以我需要知道这个规则。
基于this answer,我认为使用了#ff00c0的颜色代码,但根据检查实际使用的颜色使用firefox's dropper tool,实际上使用的是#ff00ab。
【问题讨论】:
-
#ff0000abc;不是有效颜色,因此它采用有效颜色的第一个父颜色 -
@AlonEitan 但是,它适用于
color属性。我在问为什么它有效以及计算值。 -
@AlonEitan 这里不是关于 CSS 颜色,而是关于属性颜色
-
@TemaniAfif 我现在才知道。你知道为什么它在属性中被转换为有效的 HEX 颜色,但在来自样式时却没有?
-
@AlonEitan CSS 语法更严格,只接受特定格式的白色属性几乎可以接受任何东西,浏览器会尝试转换为有效的东西。不知道这背后的原因,但我知道是这样的。这就像
width="205defd"一样,浏览器会认为宽度是205px。你不能用 CSS 做到这一点