`
aiyou110
  • 浏览: 30057 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

关于css sprite 概述

    博客分类:
  • css
阅读更多

     记得当时面试的时候被问到对css sprite的认识,现在详细的解析一下,这个用法,加深一下映像,总没啥坏处。

     一、什么是css sprite?用css sprite有什么好处?

      css sprite,也有人叫css精灵、css雪碧,说的通俗一点儿,就是将css中定义的多个背景图片合成到一张,以减少http请求数。目前很多网站都在使用,算不上新技术,但是也很好用。

       最大的优点就是可以减少http的请求数,一般情况下,合成后得到的图片,比单张图片相加后所得的数据量,要小得多。另一个喜爱大型 sprite 的理由是可以利用一些 sprite 生成器来简单得生成 sprite。

      二、经典的例子——社交网站分享功能

<ul class="share"> 
 <li>分享到:</li> 
 <li><a class="renren" href="#" title="分享到人人网">人人网</a></li> 
 <li><a class="kaixin"  href="#"  title="分享到开心网">开心网</a></li> 
 <li><a class="sina"  href="#"  title="转帖到新浪微博">新浪微博</a></li> 
 <li><a class="douban"  href="#" title="分享到豆瓣">豆瓣</a></li> 
 <li><a class="more"  href="#"  title="添加到更多">更多</a></li> 
 </ul>
 ul.share li{float:left;}
 ul.share li a{display:block;width:25px;height:25px;text-indent:-9999px;}
 a.renren{background:url(../images/share.gif) 0 0 no-repeat;}
 a.kaixin{background:url(../images/share.gif) -25px 0 no-repeat;}
 a.sina{background:url(../images/share.gif) -50px 0 no-repeat;}
 a.douban{background:url(../images/share.gif) -75px 0 no-repeat;}
 a.more{background:url(../images/share.gif) -100px 0 no-repeat;} 
    分享功能是css精灵最常用的一种展示形式,不过上边的代码也有不完全的地方,css代码应该使用background-position这样可以增强代码的可维护性。此外图像替换时,如果使用text-indent属性之后,如果用户禁用图片,那么相对应的文字链接也就看不到了。在firefox下还需要为元素设置overflow:hidden,否则点击元素的时候,会出现超长的虚线框。
     不过现在分享代码都有比较多的网站提供,Bshare、加网、分享到很多的提供商,目前百度也已经推出了自己的分享代码,但是原理大家也是要知道一下的。
   三、使用css sprite需要注意的事项:
       虽然css sprite有很多的好处,但是是否启用,还是要看具体的项目需要,不能为了css sprite而去盲目使用。需要在可维护性vs降低负载之间权衡利弊,选择最适合你的项目的方式。
  1. 使用大图整合的最好是那些不经常做修改的小图片。对于sprite的修改需要谨慎,如果实在要对css sprite做修改的话,也需要规定图片和样式表的版本号,以防止影响其他的工程。
  2. 那种需要横向或者纵向重复的图最好不要用。当然单纯横向或者纵向的图片也是勉强可以的,但是这样会消耗过多的内存,所以不主张这样做。
  3. css sprite带来额外的内存消耗,虽然说使用它可以减少http请求数。但是这个只是发生在第一次的请求中。值得注意的是:浏览器会缓存所有的图片 – 无论图片 sprite 与否。
  4. 无法对IE6透明滤镜加载的图片设置background-position,当然,也可以使用DD_belatedPNG来解决这个问题。
  5. 此外,合成图片和编码的时间成本也会增加。需要一边切图一边同时构架代码。定位时要根据图片要现实的位置来合并图片。给每个图片要有足够的空间显示,不用担心留白会影响图片的大小。
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics