CSS Sprites简介
简介
CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式。它允许将一个页面涉及到的所有零星图片都包含到一张大图中, 利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位, 访问页面时避免图片载入缓慢的现象。
优点
- 利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置
- 利用CSS Sprites能很好地减少网页的http请求,从而大大的提高页面的性能,这也是CSS Sprites最大的优点,也是其被广泛传播和应用的主要原因
- CSS Sprites能减少图片的字节,曾经比较过多次3张图片合并成1张图片的字节总是小于这3张图片的字节总和
- 解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名,从而提高了网页的制作效率
- 更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变。维护起来更加方便
缺点
- 图片合并麻烦:图片合并时,需要把多张图片有序的合理的合并成一张图片,并留好足够的空间防止版块出现不必要的背景
- 图片适应性差:在高分辨的屏幕下自适应页面,若图片不够宽会出现背景断裂
- 图片定位繁琐:开发时需要通过工具测量计算每个背景单元的精确位置
- 可维护性差:页面背景需要少许改动,可能要修改部分或整张已合并的图片,进而要改动css。在避免改动图片的前提下,又只能(最好)往下追加图片,但这样增加了图片字节
使用
- 通过ps等具有相同功能的工具将图片合理的集合到一张图片上
- 在给要显示图片的块添加
overflow:hidden属性,以及设置好宽高(width和height),这相当于实现了对图片的切割。注意:overflow这个属性是可以继承的,所以在用到一个图片由多个图片块合成的时候,可以直接在最外面的包含块设置overflow:hidden即可 - 通过上面的那个切割和CSS的定位技术,把大图中的各个小图精准的分散到各个需要的地方去。
可行具体的步骤可以是:
- 首先定义块的属性,主要有:
- width
- height
- position:absolute
- overflow:hidden
- background:url(图片地址) no-repeat
- 如果采用的包含元素不是块,还应采用
display:block来将其转变为块
- 定位块的位置,即把块移动到页面中要显示图片的那个位置(注意我们上面采用的是absolute绝对定位)
- top
- left
- bottom
- right
现在图片包含块的属性、用什么背景以及块的位置都已经弄好了,开始移动背景的位置,即确定要显示背景图片的哪些内容
- background-position,默认是(左,上),左上角为(0,0),即若定位图片右下角的块,则应为(负值、负值)
- 该属性的可能值为:

- background-position,默认是(左,上),左上角为(0,0),即若定位图片右下角的块,则应为(负值、负值)