CSS Cookbook, 2nd Edition

Problem

You want to save on bandwidth by placing all or most icons onto one image.

Solution

Place the most-often-used images into one master image, making sure that there is plenty of space around each image (see Figure 3-63).

Figure 3-63. Icons are placed into one image

Create enough space for each icon's own space. For this example, one icon will be placed next to a heading (see Figure 3-64):

h2 { margin: 0; font-family: Verdana, Arial, Helvetica, sans-serif; padding: 0 0 0 24px; font-weight: normal; }

Using id selectors, bring in each icon to the appropriate heading by using background-position property (see Figure 3-65):

h2#warning { background-image: url(sprite-source.gif); background-repeat: no-repeat; background-position: -16px 24px; } h2#questions { background-image: url(sprite-source.gif); background-repeat: no-repeat; background-position: -16px 60px; } h2#comment { background-image: url(sprite-source.gif); background-repeat: no-repeat; background-position: -16px 96px; } h2#document { background-image: url(sprite-source.gif); background-repeat: no-repeat; background-position: -16px 132px; } h2#print { background-image: url(sprite-source.gif); background-repeat: no-repeat; background-position: -16px 168px; } h2#search { background-image: url(sprite-source.gif); background-repeat: no-repeat; background-position: -16px 204px; }

Figure 3-64. Making space in the design for the icons

Figure 3-65. The icons are displayed from one single image

Discussion

In much the same way developers use the same image over and over again to make use of a browser's ability to cache an image, using sprites helps push that idea a bit further. By placing the separate graphic elements onto one image, web developers can reduce the amount of server calls to their machines from a browser. This solution would be more apt for sites receiving medium-to-large amounts of traffic.

See Also

The CSS Sprites article at http://www.alistapart.com/articles/sprites.

Категории