【问题标题】:Why doesn't the color fall back to black? [duplicate]为什么颜色不会变回黑色? [复制]
【发布时间】: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 做到这一点

标签: html css


【解决方案1】:

根据您链接的答案,我们将执行以下步骤:

#ff0000abc ---> # ff0 000 abc ---> # ff 00 ab ---> #ff00ab

而不是#ff00c0

不考虑# 你有9 个字符(可被3 整除),所以你不会再添加了。您将它们分成 3 组,然后将每组中多余的剪掉,只保留 2 组。

【讨论】:

  • 我误解了该过程的第二部分需要零填充到 12 个字符。
  • @hyp-ho 我试图找到它在规范中的定义
  • 我在latest WHATWG specification中找到了这些,但我当时还没有在W3C规范中找到。
  • @hyp-ho 就是这样。您不会在 W3C 规范中找到某些内容,因为这与 HTML 世界相关,而不是 CSS 世界,即使稍后它会在级联中使用,但这是另一回事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2020-11-08
  • 1970-01-01
相关资源
最近更新 更多