Background repeat and CSS sprites

CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases when the background repeats.

The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case: when you want to repeat horizontally, sprite vertically.

Example

» Demo

You have three divs and you want to repeat their background vertically, so that the background takes the whole height of the div, according to the content.

Source images:

  1. 1.png
  2. 2.png
  3. 3.png

Singe image sprite:

sprite8.png

CSS definitions to make this work:

    div {
        background-image:url(sprite8.png);
        background-repeat: repeat-y;
        width: 160px;
        padding: 20px;
        margin: 20px;
        float: left;
    }

    #my {
        background-position: 0px;
    }
    #my2 {
        background-position: -200px;
    }
    #my3 {
        background-position: -400px;
    }

Every image is 200px wide. Because of the 2x20px margin left and right, the width is 160px (=200 - 20 - 20)

The tree divs have IDs: my, my2, my3

Result

Once again, the result

Tested on Windows with IE7, FF, O, S.

This entry was posted on Thursday, April 3rd, 2008 and is filed under CSS, performance. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.


Get notification for future posts: follow me on Twitter or subscribe to my RSS feed

42 Responses to “Background repeat and CSS sprites”

  1. Brett Zamir Says:

    Nice to see this issue addressed, thanks… I like to use percentage widths though–I guess only something like SVG would allow one to indicate a percentage width/height which would work on both the image as well as the containing element?

  2. CSS Sprites (y II) » Criterion Says:

    [...] comentarios de esta entrada suscribiendote al feed RSS 2.0. Puedes dejar un comentario, o enviar un trackback desde tusitio. [...]

  3. e devlet Says:

    css background examples , Properties , Attribute – - http://css-lessons.ucoz.com/background-css-examples.htm

  4. Andrew Says:

    Thanks for the demo and the special instruction on repeating css sprite images!

  5. James Says:

    What if I have a background image that needs to be repeated x and y?

  6. Background repeat and CSS sprites / phpied.com | CSS Tutorials - CSSHelper.net Says:

    [...] Source [...]

  7. CSS Sprites - Background Repeat Problem | Webdesignblog Says:

    [...] gibt zwar eine Möglichkeit, aber ich halte die nicht für wirklich brauchbar, da man ziemlich eingeschränkt wird und für [...]

  8. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials | CSS | Smashing Magazine Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  9. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials 於囧 Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  10. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  11. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials | Feed Reader Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  12. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials | Design Blog Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  13. Video | ClickLogin Web Design Says:

    [...] Background Repeat as great as CSS Sprites CSS sprites have been a great approach to urge a loading speed of your pages. One of a problems we competence face with sprites is how to bargain with cases where a credentials repeats. The order is flattering simple: if we wish a credentials to repeat plumb (top to bottom), place a images in a goddess horizontally (left to right) as great as have certain a particular images in a goddess have a same height. For a conflicting case, when we wish to repeat horizontally, goddess vertically. [...]

  14. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials « LocalLab : Foire aux Infos Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  15. 我想网 » Blog Archive » 解密CSS Sprites:技巧、工具和教程 Says:

    [...] Background Repeat and CSS Sprites 什么情况下使用CSS Sprites [...]

  16. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials | Designurimagination Blog - Let Your Imagination Fly Says:

    [...] Background Repeat and CSS Sprites [...]

  17. 解密CSS Sprites:技巧、工具和教程| 在这个大都市,我只需要一个角落,用来记录我的生活| 都市de角落 Says:

    [...] Background Repeat and CSS Sprites 什么情况下使用CSS Sprites [...]

  18. 解密CSS Sprites:技巧、工具和教程 | 1px left|左1像素 Says:

    [...] Background Repeat and CSS Sprites 什么情况下使用CSS Sprites [...]

  19. PureCSS » Blog Archive » 解密CSS Sprites:技巧、工具和教程 Says:

    [...] Background Repeat and CSS Sprites 什么情况下使用CSS Sprites [...]

  20. La tecnica CSS Sprite : come ridurre il tempo di caricamento di una pagina web | Pecciola Says:

    [...] infine un esempio pratico : http://www.phpied.com/background-repeat-and-css-sprites/ var heyos_popunder_user = 8812; var heyos_popunder_type = ‘G’; Segnala presso: Articoli che [...]

  21. AMB Album » The Mystery Of CSS Sprites: Techniques, Tools And Tutorials Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  22. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials « Ramesh Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  23. Sharon Says:

    if you interesting in reading about CSS Sprites in hebrew, you are invited to read this article:
    http://www.ing.co.il/?p=24

  24. CSS Sprites: CSS图片合并技术详解 | 帕兰映像 Says:

    [...] Background Repeat and CSS Sprites 什么情况下使用CSS Sprites [...]

  25. The Mystery Of CSS Sprites: Techniques, Tools And Tutorials | 9Tricks.Com - Tips - Tricks - Tutorials Says:

    [...] Background Repeat and CSS Sprites CSS sprites are a great way to improve the loading speed of your pages. One of the problems you might face with sprites is how to deal with cases where the background repeats. The rule is pretty simple: if you want the background to repeat vertically (top to bottom), place the images in the sprite horizontally (left to right) and make sure the individual images in the sprite have the same height. For the opposite case, when you want to repeat horizontally, sprite vertically. [...]

  26. sunnybear Says:

    There is open source tool – http://sprites.in/ – which can automatically create CSS Sprites of aolmost any complexity. It’s also included into Web Optimizer tool – http://www.web-optimizer.us/

  27. tobias Says:

    dont want to be picky, but its the padding not the margin which gets added to the width of a box

  28. Jonas Says:

    Just what i was searching for .. .. but it has some limitations due to all the repeating images must go from edge to edge of the sprite .. so you’ll basicly need one for repeat-x and one for repeat-y .. + if you have larger images in you sprite – the 1px wide images must as said go from edge to edge which will eventually make the sprite larger and heavier ..

    Alternately you could have 3 sprites .. one for images, one for repeat-x, one for repeay-y .. the images that needs repeat x & y – that might be another issue that needs attention .. might not be possible with a simple solution ..

    But great article .. made me think a bit .. ;)

  29. Rich Says:

    I’m of the opinion it’s better to have 3 sets of sprites. 1 core images, 1 vertical repeats, 1 horizontal. The whitespace you have by having them together defeats the object.

  30. shahab Says:

    hi
    I’m using this technique
    it’s very good
    but i can’t sprites some image . ..
    some of them make trouble in my theme

  31. Max Says:

    Be aware that, though the use of sprites is always recommended, it is not always possible to have repeating backgrounds with sprite images.

    Let’s say we have the following situation. We use a sprite (with vertically aligned images with an transparent background) for our images for a website, with each image in the sprite having different dimensions. One of the images is a 1px by 18px gradient which is used for a horizontal repeating background. This means a width of 1px and an height of 18px. However, we still have other images in the sprite, with widths of over 1px. Let’s say that our widest image in the sprite is 50px.
    Should we now use the first mentioned gradient for a horizontal repeating background, we see that something is wrong. The gradient is repeated, but with -you guessed it- 49px of transparent space between the 1px wide gradients. This is because the browser always uses the whole width of the used image (in this case a sprite) when repeating horizontally. It doesn’t know that we only want to repeat the small 1px by 18px image.

    We can counter this effect in 2 ways. The first way, the easiest and most obvious way, is by using a seperate image for the gradient. The second way is making sure that all images that will be repeated in a background are as wide as the whole sprite image. In the example stated above, we need to make sure that our gradient is 50px by 18px.
    This will effectively save the browser an extra HTTP request since the browser doesn’t have to download the extra image. This saves 4KB (woohoo!) and around 100ms. The latter is the most important difference here, since 10 of those tiny gradients means an extra second added to your page-buildup. The sprite itself won’t grow in size (much) because of the already used bytes for the (in this case 49px of transparent) pixels not used.

  32. brixter Says:

    I was wondering if we can repeat-x css sprites? it’s not possible right?

  33. 彬Go:CSS Sprites教程、工具介绍 Says:

    [...] Background Repeat and CSS Sprites [...]

  34. 解密CSS Sprites:技巧、工具和教程 (收藏) | blog.moocss.com Says:

    [...] Background Repeat and CSS Sprites 什么情况下使用CSS Sprites [...]

  35. Alex Says:

    Unfortunately, this works only with equal height (or width for x-repeated) sprite backgrounds.

  36. ranjit Says:

    Its not possible for other scenario

  37. background checks Says:

    background checks…

    [...]Background repeat and CSS sprites / Stoyan’s phpied.com[...]…

  38. Catzie Says:

    I’m new at using sprites, and the second paragraph answered the question I had in mind. Thanks!

  39. 极客说 » Blog Archive » CSS Sprites(CSS图像拼合技术)教程、工具集合 Says:

    [...] Background Repeat and CSS Sprites [...]

  40. 最全的CSS Sprites(CSS图像拼合技术)教程、工具集合 | 博客水木 Says:

    [...] Background Repeat and CSS Sprites [...]

  41. elbakai Says:

    Thank you very much for the demo and the special instruction on repeating css sprite images, really it was a probleme for me, i will try this one

  42. Michele Says:

    veryuseful..i had the same problem before..but thanks to this article i found the answer.

Leave a Reply