bugl
bugl
HomeLearnPatternsPathsSearchPremium
HomeLearnPatternsPaths
Learn/CSS/CSS Foundations
CSS•CSS Foundations

CSS Image Sprites

An image sprite is a collection of various small images put into one larger image file, called a "sprite image".

A sprite image is typically arranged in a grid-like way, like this:

A web page with multiple images takes a longer time to load, and generates multiple server requests.

So, instead of downloading each image separately, the browser downloads the single sprite image file, which will reduce the number of server requests and reduce bandwidth usage.

CSS Image Sprites Example

The CSS key properties used for image sprites are:

  • background-image
  • background-position

Here, the CSS code specifies which part of the sprite image ("img_navsprites.gif") to show for the different navigation items (home, next, and previous):

Example

Formatted code
  <html>
<head>
<style>
#home {
  width: 46px;

  height: 44px;
  background-image: url(img_navsprites.gif);

  background-position: 0 0; /* Top-left corner of the sprite */
}

#prev {
  width: 43px;
  height: 44px;

  background-image: url('img_navsprites.gif');
  background-position:
  -47px 0; /* 47px to the left of the sprite's top-left */
}
#next
  {
  width: 43px;
  height: 44px;
  background-image:
  url('img_navsprites.gif');
  background-position: -91px 0; /* 91px to
  the left of the sprite's top-left */
}
</style>

  </head>
<body>
<img id="home" src="img_trans.gif" width="1"
  height="1">
<img id="prev" src="img_trans.gif" width="1" height="1">
<img id="next"
  src="img_trans.gif" width="1" height="1">
</body>
</html>

Live preview

  • width , height - Defines the width and height of each image-parts
  • background-image: url(img_navsprites.gif); - Defines the url of the image sprite
  • background-position - Shifts the background image within each element, to display only the desired portion of the sprite image
  • <img id="home" src="img_trans.gif"> - Each image just start with a small transparent image because the src attribute cannot be empty (the displayed image will be the background image we specify in CSS)

Image Sprites in a Navigation List

Here, we use the sprite image ("img_navsprites.gif") inside a navigation list. We will use an HTML list (<ul> and <li>) for the navigation list:

Example

Formatted code
#navlist {
  position: relative;
}
#navlist li {
  margin: 0;
  padding: 0;
  list-style: none;
  position: absolute;
  top: 0;
}
#navlist li, #navlist a {
  height: 44px;
  display: block;
}
#home {
  left: 0px;
  width: 46px;
  background: url('img_navsprites.gif')
  0 0;
}
#prev {
  left: 60px;
  width: 43px;
  background: url('img_navsprites.gif') -47px 0;
}
#next {
  left: 120px;
  width: 43px;
  background: url('img_navsprites.gif')
  -91px 0;
}

Live preview

  • #navlist {position:relative;} - position is set to relative to allow absolute positioning inside it
  • #navlist li - set margin and padding to 0, remove bullets, and all <li> are absolute positioned
  • #navlist li, #navlist a - set the height of all images to 44px and display as block

Now position and style each navigation item:

  • #home {left:0px;width:46px;} - Positioned all the way to the left, and the width of the image is 46px
  • #home {background:url(img_navsprites.gif) 0 0;} - Defines the background image and its position (left 0px, top 0px)
  • #prev {left:60px;} - Positioned 60px to the right (#home width 46px + some extra space between items)
  • #prev {background:url('img_navsprites.gif') -47px 0;} - Defines the background image 47px to the right (#home width 46px + 1px line divider)
  • #next {left:120px;} - Positioned 120px to the right (start of #prev is 60px + #prev width 43px + extra space)
  • #next {background:url('img_navsprites.gif') -91px 0;} - Defines the background image 91px to the right (#home width 46px + 1px line divider + #prev width 43px + 1px line divider)

Image Sprites - Hover Effect

Now we want to add a hover effect to our navigation list.

Our new image ("img_navsprites_hover.gif") contains three navigation images and three images to use for hover effects:

Because this is one single image, and not six separate files, there will be no loading delay when a user hovers over the image.

We only add three lines of code to add the hover effect:

Example

Formatted code
#home a:hover {
  background: url('img_navsprites_hover.gif') 0 -45px;
}
#prev a:hover {
  background: url('img_navsprites_hover.gif') -47px
  -45px;
}
#next a:hover {
  background: url('img_navsprites_hover.gif') -91px
  -45px;
}

Live preview

  • #home a:hover {background: url('img_navsprites_hover.gif') 0 -45px;} - For all three hover images we specify the same background position, only 45px further down

Previous

CSS Image Gallery

Next

CSS Attribute Selectors

This chapter

Overview
108

Lessons

263m

Read time

1. CSS Tutorial2. CSS Introduction3. CSS Syntax4. CSS Selectors5. CSS Grouping Selectors6. How To Add CSS7. How To Add Internal CSS8. How To Add Inline CSS9. Multiple Style Sheets & Cascading Order10. CSS Comments11. CSS Errors12. CSS Colors13. CSS RGB Colors14. CSS HEX Colors15. CSS HSL Colors16. CSS Backgrounds17. CSS Background Image18. CSS Background Image Repeat19. CSS Background Attachment20. CSS Background Shorthand21. CSS Borders22. CSS Border Width23. CSS Border Color24. CSS Shorthand Border Property25. CSS Rounded Borders26. CSS Margins27. CSS Margin Collapse28. CSS Padding29. CSS Padding and box-sizing30. CSS Height and Width31. CSS Min/Max Height and Width32. CSS Box Model33. CSS Outline34. CSS Outline Width35. CSS Outline Color36. CSS Outline Shorthand37. CSS Outline Offset38. CSS Text Color39. CSS Text Alignment40. CSS Text Decoration41. CSS Text Decoration Styles42. CSS Text Transformation43. CSS Text Spacing44. CSS Text Shadow45. CSS Web Safe Fonts46. CSS Font Fallbacks47. CSS Font Style48. CSS Font Size49. CSS Google Fonts50. CSS Great Font Pairings51. CSS Font Property52. CSS Icons - Font Awesome53. CSS Icons - Bootstrap54. CSS Icons - Google55. CSS Links56. CSS Link Buttons57. CSS Lists58. CSS Tables59. CSS Table Size (Width and Height)60. CSS Table Alignment61. CSS Table Styling62. CSS Responsive Tables63. CSS The display Property64. CSS Hide Elements65. CSS The max-width Property66. CSS The position Property67. CSS Fixed and Absolute Positioning68. CSS Sticky Positioning69. CSS Position Offsets70. CSS The z-index Property71. CSS The overflow Property72. CSS overflow-x and overflow-y73. CSS Float74. CSS clear and Clearfix Hack75. CSS display: inline-block76. CSS Center Align77. CSS Horizontal Align78. CSS Vertical Align79. CSS Combinators80. CSS Pseudo-classes81. CSS Interactive Pseudo-classes82. CSS Structural Pseudo-classes83. CSS Pseudo-elements84. CSS Pseudo-elements for Text85. CSS Pseudo-elements for Content86. CSS Opacity87. CSS Navigation Bars88. CSS Vertical Navigation Bar89. CSS Horizontal Navigation Bar90. CSS Dropdowns91. CSS Advanced Dropdowns92. CSS Image Gallery93. CSS Image Sprites94. CSS Attribute Selectors95. CSS Advanced Attribute Selectors96. CSS Forms97. CSS Form Inputs98. CSS Form Focus and Icons99. CSS Form Elements100. CSS Counters101. CSS Units102. CSS Absolute Units103. CSS Relative Units104. CSS Inheritance105. CSS Specificity106. CSS Specificity Hierarchy107. CSS The !important Rule108. CSS Math Functions

On this page

CSS Image Sprites ExampleImage Sprites in a Navigation ListImage Sprites - Hover Effect