在网页中,背景循环可分为四类:
1.横向循环
2.纵向循环
3.横纵向循环
4.不循环
一般在css sprites中,横纵向循环的背景是不存在的,更多的是使用不循环或者单向循环。
另外,在一张css sprites的拼合图片中,一般只能存在横向循环或者只能存在纵向循环,也就是说,纵向循环和横向循环在css sprites中是不能在一起出现的。

css sprites的思想很简单:
利用background获取容器背景,并在指定容器中显示,利用background-position来指定背景上的图案。
原理如图:

图片出自网易

如图,你必须创建一个容器,显然,这个容器的大小不得超过图案边缘的空白处,否则就会出现别的图案。
这里图案离图片的左边距和上边距是你用来定位图片background-position的参数。
这里要达到图片上容器中的效果,定位参数为:background-position:-3px -131px;
当然,你也得加入容器的大小,容器为block元素,大小也可以根据父层来定,总之,容器大小不可超过它所取图案的周边极限大小如图。

在css sprites中,极限宽度是根据图案的布局来设定的,一般情况下,容器的极限宽度是根据图案和它的上下左右其他图案的边距来指定。
如果图案某侧是图片的边缘,而不存在任何其他图案,那么容器将可以由此无限延伸,如果图案两侧都没有图案,则这块背景就可以循环了,上下没有图案则是纵向循环,左右没有图案则是横向循环。
很常见的就是某个背景横向循环,不过在css sprites中,你的循环背景必须填满整个宽度或者高度,并不是以前常用的1px,如图。

我写了一个关于css sprites的demo,你可以微调各项参数来看容器和背景图的变化。css sprites demo