想这样直接在CSS里写上图片的编码的做法好么

2013-01-06 01:32:36 +08:00
 Air_Mu
不好意思,不懂这个正式名称叫什么..只得这样起标题。

经常看到一些网站在使用比较小的图片时直接这样写:

url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAA.............)。
这样有什么好处呢?
4012 次点击
所在节点    CSS
9 条回复
wzxjohn
2013-01-06 01:34:10 +08:00
Base64编码。理论上可以减少Http请求的发起次数,可以加快页面访问。
Air_Mu
2013-01-06 01:38:30 +08:00
恩 去搜了下BASE64图片 关键词,看了一些文章。这个对网页中多次使用的图片很有效果。但是悲剧的IE7不支持..
lingyired
2013-01-06 11:08:10 +08:00
我的建议:
如果你的网站部考虑兼容性(主要是旧版本浏览器)的话,可以考虑使用。

BASE64 图片,确实可以减少HTTP 请求,但也不要盲目的使用。

BASE64 是将文件转换成字符串,你的文件多大,出来的字符串也是多大。

因此,你需要考虑的是:
避免CSS 过大而影响加载的体验,比如你一张500K 的背景图片,就不适合用BASE64 的方式堆进CSS,因为这样会让CSS 大了500K,从而使得CSS 加载慢,可能影响加载时候的体验。
相反,一些小图标就很适合(几K甚至1K-)。

如果你不喜欢CSS 切图的话,将小图片用Base64 的形式嵌入CSS 也是可取的。

大图还是用回图片格式,小图可用Base64 代替,如果图片多的话,不妨单独用一个CSS 来装载这些Base64 的样式,避免主体CSS 加载过久。


另,有一篇文章写得更详细,可以去参考:

http://www.zhangxinxu.com/wordpress/2012/04/base64-url-image-%E5%9B%BE%E7%89%87-%E9%A1%B5%E9%9D%A2%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/
lianghai
2013-01-06 12:12:39 +08:00
@lingyired:「你的文件多大,出来的字符串也是多大」这句话不对吧?
shiny
2013-01-06 12:16:04 +08:00
BASE64 编码过后的字符串尺寸更大(借助于gzip可能情况稍微好一点)

如果有多个小图,可以用这种方式来减少http请求数;其他情况下则不太适用。
Kaiyuan
2013-01-06 12:21:52 +08:00
Base64 编码体积会比原来的文件更大的,不过我用 Base64 编码把一个 ttf 文件嵌入 CSS 里面解决 Firefox 跨域 Webfont 问题。
liyandong
2013-01-06 16:04:28 +08:00
如果你不考虑IE6\7就可以使用。大图片不建议~~~
allenm
2013-01-06 16:08:58 +08:00
BASE64 编码出来的字符串会比原来的文件体积大,可以看这里: http://blog.allenm.me/2012/11/base64-encoding/ 不过启用 GZIP 之后,应该会减少体积的增加量。
lingyired
2013-01-06 18:46:05 +08:00
@lianghai 嗯,感谢告之

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/56712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX