在背景图直接使用 SVG

发布于

background-image 中 直接使用 data:image/svg+xml

之前如果想要在 CSS 里边直接嵌入图片文件一般是用 Data URL 的方式,但是常规图片文件诸如 .jpg .png 都是二进制文件,所以需要用 base64 转换一下。

前缀如下:

data:image/gif;base64,
data:image/jpeg;base64,
data:image/png;base64,

理所当然的,到了嵌入 SVG 时也想到了用 base64

data:image/svg+xml;base64,

还记得以前看到有文章抱怨,SVG 能直接嵌入到 HTML 里,却不能嵌入到 CSS 中。

直到看到火狐自己的网站,Firefox 附加组件 最近改版,开始使用这种方法。

直接把文本贴在 Data URL 后面,看的出来,里边只是把 svg/xml 文本经过网址编码转义一下:

  • < 变成 %3C
  • > 变成 %3E
  • # 变成 %23

虽然火狐和 chrome 支持这种写法,但是在开发者工具里边,CSS 中引用的背景图,右键选择 复制图像的 Data-URL 的时候,还是只能转换成 base64 加密的 png 。

瞄了一眼 MDN,是我大惊小怪了。 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/data_URIs