CSS中的非引用数据URI是否有效?

MM.*_*MM. 10 css w3c-validation data-uri

#something {
    background: url(data:image/png;base64,ABCDEF);
}
Run Code Online (Sandbox Code Playgroud)

此代码段适用于所有支持数据URI的浏览器(显然不包含ABCDEF).

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

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

验证者不会在没有引号的情况下接受它:

值错误:后台URL(数据:image/png; base64,ABCDEF)是一个不正确的URL

如果您使用单引号或双引号括起URI,则会进行验证.

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

Bol*_*ock 11

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

这可能是一个验证错误.具体来说,它似乎不会以任何形式处理不带引号的数据URI,因为当我只是data改为http(即使它显然不像典型的HTTP地址):

#something {
    background: url(http:image/png;base64,ABCDEF);
}
Run Code Online (Sandbox Code Playgroud)

......然后神奇地通过验证.

  • 同意.如果规范将其定义为可选,那么除非有其他说法需要对数据方案有所不同,否则问题在于验证器是否因为缺少标记而失败. (2认同)