CSS图像合并技术 Image sprites 精灵图

769 阅读2分钟

原理

CSS Sprites 其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的background-imagebackground-repeatbackground-position 的组合进行背景定位,background-position 可以用数字精确的定位出背景图片的位置。

在网页访问中,客户端每需要访问一张图片都会向服务器发送请求,所以,访问的图片数量越多,请求次数也就越多,造成延迟的可能性也就越大。利用 CSS Sprites 技术,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢慢显示出来了。

所以,CSS Sprites 技术加速的关键,并不是降低质量,而是减少个数。当然随之而来的增加内存消耗,CSS Sprites 图片繁琐的合成等缺点在网站性能的提升面前,就不足为道了。所以大型网站都会运用到CSS Sprites这项技术。

举个栗子

比如说淘宝首页,一张图片就是一个http请求,如果一个网页上面有几百张图片,那么将会是几百个http请求。再加上同时有很多游客会访问淘宝,这会导致服务器反应速度下降,甚至崩溃。这个时候,CSS Sprites 就有很好的表现机会了,他能把不会经常变动的小图标集中到一张图片上,不但减少http请求,而且还降低了图片的大小,加快图片的加载速度。

伪代码演示

// html
<div class='css-spirit' id='item1'></div>
<div class='css-spirit' id='item2'></div>
<div class='css-spirit' id='item3'></div>
// css
.css-spirit {
	background-image:url(/整图地址); 
    background-repeat:no-repeat;
}

#item1 {
	width: 16px;
    height:16px;
    background-position:0 -234px;
}
#item2 {
	width:容器宽度;
    height:容器高度;
    background-position:X坐标 Y坐标;
}
#item3 {
	width:容器宽度;
    height:容器高度;
    background-position:X坐标 Y坐标;
}

最终结果就是:

整张图如下

item1 的显示效果为: