CSS Sprites工作原理及优缺点

开发 前端
本文向大家描述一下CSS Sprites工作原理及优缺点,CSS Sprites技术早在2005年CSSZengarden的园主DaveShea就在ALA发表对该技术的详细阐述。

你对CSS Sprites技术的工作原理和优缺点是否了解,这里和大家分享一下,希望对你的学习有所帮助。

CSS Sprites工作原理及优缺点
  
   CSS Sprites技术早在2005年CSSZengarden的园主DaveShea就在ALA发表对该技术的详细阐述。

  原先只在CSS玩家之间作为一种制作方法流传,后来出来个14RulesforFaster-LoadingWebSites,技术人员之间竞相传阅,其中第一条规则MakeFewerHTTPRequests就提到CSS Sprites。于是这个小妖精就火了起来,甚至出现了在线生成工具,势不可挡也。近来国内很多blog都提到CSS Sprites,最著名的例子莫过于google.co.kr下方的那几个动画。最新发布的YUI中,也是使用到CSS Sprites,几乎都有的CSS装饰图都被一个40×2000的图包办。社交大站Facebook最近也使用了一个22×1150的图片承担了所有icon。一时间,CSS Sprites无处不在。

CSS Sprites工作原理

  我们知道,自CSS革命以降,HTML倾向于语义化,在一般情况下不再在标记里写装饰性的内容而是把呈现的任务交给了CSS。GUI是缤纷多彩的,少不了各种漂亮的图来装点。新时代的生产方式是,在HTML布满各种各样的钩子(hook),然后交由CSS来处理。

  在需要用到图片的时候,现阶段是通过CSS属性background-image组合background-repeat,background-position等来实现(题外话:为何我提现阶段,因为未来浏览器若支持content则又新增另外的实现方法)。我们的主角是,你一定猜到了,就是background-position。通过调整background-position的数值,背景图片就能以不同的面貌出现在你眼前。其实图片整体面貌没有变,由于图片位置的改变,你看到只该看到的而已。就好比手表上的日期,你今天看到是21,明天看到是22,是因为它的position往上跳了一格。所以你也大概了解到,CSS Sprites一般只能使用到固定大小的盒子(box)里,这样才能够遮挡住不应该看到的部分。

CSS Sprites优点

  我们从前面了解到,CSS Sprites为什么突然跑火,跟能够提升网站性能有关。显而易见,这是它的巨大优点之一。普通制作方式下的大量图片,现在合并成一个图片,大大减少了HTTP的连接数。HTTP连接数对网站的加载性能有重要影响。

CSS Sprites缺点

  至于可维护性,这是一般双刃剑。可能有人喜欢,有人不喜欢,因为每次的图片改动都得往这个图片删除或添加内容,显得稍微繁琐。而且算图片的位置(尤其是这种上千px的图)也是一件颇为不爽的事情。当然,在性能的口号下,这些都是可以克服的。

  由于图片的位置需要固定为某个绝对数值,这就失去了诸如center之类的灵活性。

  前面我们也提到了,必须限制盒子的大小才能使用CSS Sprites,否则可能会出现出现干扰图片的情况。这就是说,在一些需要非单向的平铺背景和需要网页缩放的情况下,CSS Sprites并不合适。YUI的解决方式是,加大图片之间的距离,这样可以保持有限度的缩放。

CSS Sprites总结

  性能压倒一切。CSS Sprites是值得推广的一种技术。尤其适宜用于FIR,比如固定大小的icon替换。为保持兼容性,图片中的各个部分保持一定的距离是一种不错的做法。

文章来源:Div-Css.net设计网参考:http://www.div-css.net/div_css/topic/index.asp?id=6933

【编辑推荐】

  1. CSS Sprites简介以及优缺点
  2. CSS中margin边界叠加问题及解决方案
  3. CSS样式表高效使用八大秘诀
  4. 创建和插入CSS样式表秘笈
  5. 实现CSS垂直居中的五大方法及优缺点
责任编辑:佚名 来源: div-css.net
相关推荐

2010-09-02 09:59:52

CSS SpritesCSS

2010-08-26 10:21:06

CSS Sprites

2019-03-13 09:00:00

Web应用SPAJavaScript

2010-09-13 17:43:59

CSS单行内容居中

2010-08-31 14:49:57

CSS居中

2021-03-17 08:00:00

NoSQL数据库存储

2021-03-04 09:00:00

架构Lambda工具

2010-09-07 13:04:14

CSS Hack

2012-05-03 09:58:19

VLANVLAN划分

2010-09-02 13:53:58

CSS Sprites

2010-08-23 10:50:39

DIV+CSS

2010-08-24 09:05:20

CSS+DIV

2010-08-26 11:27:35

CSS居中

2014-05-12 09:26:08

2010-08-27 13:58:06

DIV+CSS

2017-10-23 13:20:37

2023-04-21 11:34:44

人工智能

2012-03-31 10:12:55

CSSWEB

2010-08-31 10:05:16

CSS Sprites

2009-08-10 17:41:42

C# Singleto
点赞
收藏

51CTO技术栈公众号