图片优化- base64 vs 雪碧图

页面渲染的过程中太多的request会增加页面的加载时间和渲染时间。为此我们通常会打包css,js文件,把图片打包成雪碧图。有时候我们还可以使用base64把图片资源直接写入css文件,这个做法非常的方面。

雪碧图

雪碧图是把各种小图片资源拼凑在一起,成为一张大图片资源。通过 background-position 来设置图片位置起始点,配合 width,height 来获取需要的图片。

EXAMPLE:

Alt text
  1. 优点
    • 把大量图片请求合并为一个图片请求
  2. 缺点
    • 难以操作和更新,没有工具的帮忙把各种小图拼在一起不是个容易的工作。
    • 如果雪碧图中有太多留白,不够紧凑会增加额外的空间消耗。
    • 如果雪碧图过于紧凑,会增加一个图片元素中显示了部分其他图片的风险。

Base64

Base64的形式为 Data URI

    data:[<mime type>][;charset=<charset>][;base64],<encoded data>

在css中

selector {
background: url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7) no-repeat left center;

}

在html中

![star](http://upload-images.jianshu.io/upload_images/3143753-6e5b7f8f2ba677ff.gif?imageMogr2/auto-orient/strip)

使用Base64可以达到我们要的优化效果,把所有的小图放入css文件中。我们把大量的图片请求都合并在了css文件中。

  1. 优点
    • 把大量的图片请求合并在了css文件中
    • 容易更新
  2. 缺点
    • 会增加25%的图片资源大小,使用了gzip后 只增加10%。
    • 不支持IE6和7

选择哪个?

两者都有人在使用,很多情况下一起配合使用会达到更好的效果。

但如果你的图片需要支持不同设备的时候,雪碧图十分好用。

selector {
    background-image: url(our_bg_image.png); /* will be downloaded on common     displays */
}
/* Stylesheet for Retina */
@media screen and (-webkit-min-device-pixel-ratio: 1.5), screen and (min-device-pixel-ratio: 1.5) {
    selector {
        background-image: url(our_bg_image@2x.png); /* will be downloaded on retina displays */
    }
}

如果我们不需要支持ie < 9 我们也可以使用base64

<script>
var retina = window.devicePixelRatio > 1 ? true : false;
if (retina) {
    // the user has a retina display
}
else {
    // the user has a non-retina display
}
</script>

以上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2.CSS Sprite(CSS 精灵), 也称作 雪碧图;如华为官网右侧提示栏: 图标字体是个比较大的技术讨论点...
    萧强阅读 12,299评论 1 16
  • 作者:守候文章转载自:https://segmentfault.com/a/1190000011390896 1....
    IT程序狮阅读 5,569评论 3 30
  • 引言 图片处理在前端工作中可谓占据了很重要的一壁江山。而图片的Base64编码可能相对一些人而言比较陌生,本文不是...
    Charlot阅读 4,697评论 0 4
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,447评论 25 709
  • 今天是端午节,在外地上学。没有吃到家乡的粽子特别的想念,更想念爷爷奶奶、爸爸妈妈。今天在食堂看到电视上的绿色豆腐,...
    风雪7缘阅读 2,472评论 0 0