10
#something {
    background: url(data:image/png;base64,ABCDEF);
}

这个片段在所有支持数据 URI 的浏览器中都有效(显然,除了 ABCDEF 之外)。

此外,根据CSS 2.1 规范,它是有效的:

...可选的单引号 (') 或双引号 (") 字符后跟 URI 本身...

但是验证器不会接受它没有引号:

值错误:背景 url(data:image/png;base64,ABCDEF) 是不正确的 URL

如果您用单引号或双引号将 URI 括起来,则它会验证。

我错过了什么吗?它是验证器中的错误吗?编辑是的

4

1 回答 1

11

只要 URI 本身不url()以任何方式破坏语法(例如(,并且)必须进行转义或 URI 编码,这样它们就不会过早地结束函数令牌,也在规范中提到),即使未引用它也应该是有效的.

这可能是一个验证器错误。具体来说,它似乎不以任何形式处理未引用的数据 URI,因为当我简单地更改为时datahttp即使它显然不像典型的 HTTP 地址):

#something {
    background: url(http:image/png;base64,ABCDEF);
}

...然后它神奇地通过了验证。

于 2013-03-18T15:53:17.283 回答