代码之家  ›  专栏  ›  技术社区  ›  Rounin

关于在CSS url()中使用数据URI的说明

  •  0
  • Rounin  · 技术社区  · 6 年前

    我正在编写一个预处理组件(在PHP中),在某些上下文中,它会在CSS中重写外部图像文件请求,例如:

    background-image: url('/my-folder/my-image.png');
    

    作为CSS内联 数据URI ,例如:

    background-image: url('data:image/png;base64,[Base-64 Encoding Here]');
    

    我刚刚(有些惊讶地)读了一遍 MDN :

    在里面 CSS级别1 这个 url() 函数表示法只描述了true 网址。在里面 CSS 2级 ,定义 url() 扩展到描述 任何URI,例如数据URI。 CSS值和单位级别3 回到 更狭隘的最初定义。现在 url() 只表示真 <url> s

    资料来源: https://developer.mozilla.org/en-US/docs/Web/CSS/url()

    真正地这似乎表明 数据URI 构成的值无效 url() 在CSS样式表中(?)

    但我什么也找不到:

    这就证明了这一点。

    我的印象是 数据URI 是对的完全有效的值 url() 在CSS样式表中。

    谁能澄清一下(最好是有权威的参考资料)?


    请注意 下面的标签是 w3c-validation -我认识到它应该是 what-wg-validation .

    0 回复  |  直到 6 年前
        1
  •  3
  •   Community Mohan Dere    4 年前

    data: URI实际上是根据 RFC 2397 ,别担心,他们还是被允许的。

    我不确定这篇MDN文章的意思是什么 “例如数据uri” ,但我把它编辑成了 URN 因为事实上 what happened in CSS 2 :

    这些规范确实扩展了<url>通过允许 Uniform Resource Names 成为其中的一部分。。。我不知道他们为什么做了这样的改变,但至少可以说这看起来很奇怪,因为我看不出骨灰盒在样式表中有什么用处。。。根据规范的措辞,它的作者似乎还不太清楚它会是什么。

    URL(统一资源定位器,请参见[RFC1738]和[RFC1808])提供Web上资源的地址。一种新的资源识别方法被称为URN(统一资源名)。它们一起被称为URI(统一资源标识符,参见[URI])。本规范使用术语URI。


    Ps:规范将其定义为“ 数据: 来自 fetch API .