为什么在CSS中使用base64Encode图像?

时间:2012-05-03 02:36:09

标签: css base64 background-image data-uri

  

可能重复:
  embedding background image data into css as base64, good or bad practice

我刚刚浏览了我的Google Chrome主页上的来源,并注意到图片是在CSS中进行base64编码的。这有什么好处?我很想认为这只是为了减少http请求,但是因为它是一个本地应用程序无论如何都没关系,对吧?它可以在本地加载图像吗?

menu > [checked]:before {
  content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAARklEQVQYlWNgwA+MgViQkIJ3QKzEAFVpjEPBf5giJaiAMRYF72DWKSEJlKMpgNsgiCTxH5sCbG7AqgBZ4V2sCv7//08QAwAUfjKKBs+BFgAAAABJRU5ErkJggg==");
  display: inline-block;
  height: 9px;
  margin: 0 5px;
  vertical-align: 50%;
  width: 9px;
}

2 个答案:

答案 0 :(得分:2)

它是Data Uri Scheme,据我所知,唯一的好处是保存HTTP请求(因为所有内容都是一个加载,而不是获取图像)。

为什么它在google chrome登陆页面上......好吧,google确实想炫耀并在所有内容上使用最新的技术。

答案 1 :(得分:1)

我认为Kirean是对的,但要详细说明具体的问题标题......

二进制图像数据在Data Uri中进行base64编码,因此它可以放在文本文件中。如果二进制数据不是base64编码,它将类似于:

?PNG

IHDR           ??FIDAT?c`???X???w@??Ui?C??"%??1?`?)!    ??)?? ?$??ln??Y?]?
???O~2?ρIEND?B`?

它可能包含"之类的字符,而css解析器可能会阻塞它。

当它是base64编码时,它只包含如下字符:

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+,=

不知道为什么他们选择这样做,也许他们不想要额外的图像文件来管理。