Explain CSS sprites, and how you would implement them on a page or site.
Topics
CSSPerformance
Edit on GitHub
CSS sprites combine multiple images into one single larger image file and uses a combination of CSS background-image
, background-position
and background-size
to select a specific part of the larger image as the desired image.
It used to be a commonly-used technique for icons (e.g. Gmail uses sprites for all their images).
Advantages
- Reduce the number of HTTP requests for multiple images (only one single request is required per spritesheet). But with HTTP2, loading multiple images is no longer much of an issue.
- Advance downloading of assets that won't be downloaded until needed, such as images that only appear upon
:hover
pseudo-states. Blinking wouldn't be seen.
How to implement
- Use a sprite generator that packs multiple images into one and generate the appropriate CSS for it.
- Each image would have a corresponding CSS class with
background-image
andbackground-position
properties defined. - To use that image, add the corresponding class to your element.
The generated stylesheet might look something like:
And can be used in the HTML as such: