If you use ImageMagick to create your sprites, you may want to read the section below on using Sprite Cow. SVG images can be combined into a sprite as well and used as an icon system. In this case the so-called PNG8 format can be used where you have 1 bit for transparency @Some Jackass: You are right, part of the file size savings comes from the fact that the total color palette for all the images will be forced into 256 colors at a maximum rather than having 256 for each image. then at the 5th time its showing the button with its hover state as it should. It really helped to understand. you can really learn from it greatly ! great revamped article! The most important thing is that it reduces a lot the calls to server – for desktops or mobile – it just shows instantly a raise in the load time. Even though you can’t “see” the rest of the sprite image, you could have a bunch of 1000px x 1000px sprite files all over your page. As far as things looking a little jagged in IE6.. Leaving more whitespace between images can be a solution to the degradation which happens when the font-size is increased or decreased. Can’t wait for SVG to be widely supported and optimized for web performance. This avoids additional HTTP requests for images, making it essentially the same thing as a sprite, without the fancy positioning. I’ve been hesitant to use much larger sprites, with many graphics in one file because of my fear it will slow down the rendering of the page. Read about sprites a while ago and just by chance a quick search led me here. Oh yes, we are advancing. I learn something new from one of your sites everyday. It’s not as genius as the 20 image sprites you can make online, but it’s much simpler and you can assign a keyboard shortcut to it in Photoshop. I do this by breaking things up into layers and then setting the opacity on layers with shadows/anti-aliasing/other semi-transparent effects to 98%. I learned to ‘turn it off’ (outline: 0;) but then… it’s… well, off and difficult for those with accessabiltiy handicaps can’t navigate… Is there a way to just ‘make the text dissapear’ but leave it in position?? Think I’ll give this sprites thing a shot in my next design! Finally, utilizing CSS, we can display just the part of an image sprite we need. Great post! Lucy makes a great point about sprites having trouble when font sizes scale, Definitely want to encourage people to test their designs at a variety of font sizes. 2.) It doesn’t make the sprite for you, it just helps you get numbers you need to use the sprite (the width, height, and background-position of individual parts of the sprite). I was wondering if it was faster to do something like this, and come to find out, it’s way better and faster! Here is my wired situation: Yeah sure, no big deal on this system I’m working on now, but the crappy old junker system I use to test IE6 is slowed to a horrible crawl by those fixes and the reason I use that crappy system to test IE6 is that I think it is representative of the type of system that most people who are using IE6 may have. @Matas Petrikas: Thanks for pointing that out. :o its pritty easy. As rollover images are just below the default state and height of each icon is equal to 50px. Tip: Just play around with the value of background-position property in the upcoming examples and you will quickly learn how the offsets work. Am I mistaken and some how there is some way to achieve this goal? Because this is referring to content, not design elements. i had to apply a 0px height for ie to the LI and A elements of my navigation. Of course semi-transparent or specific background color anti-aliasing will look cleaner still but by combining all of this in a carefully controlled manner we can use semi-transparent PNGs that degrade very nicely in IE6 (i think even 5.5) without messing with javascript fixes or AlphaLoader (which is very slow). The only trick sometimes is identifying where the style is being declared if not in stylesheet.css. Frontend Masters is the best place to get it. top-left corner of the image sprite, so there is no need to shift the background-image. Unfortunately this effect compounds itself as you add more images. Ultimately, the sane solution is to *stop using bitmapped graphics*. If the largest width is greater than the largest height, the sprite sheet should be arranged horizontally. Sprite Cow helps you get the background-position, width and height of sprites within a spritesheet as a nice bit of copyable css. Of course, the landscape has greatly changed and with increasing usage of jpegs and PNGs, and increased bandwidth of users, response time (round trip) becomes much more of a factor than simply bandwitdh. To compile sprites via command line, install css-sprite globally with: Then, to generate sprites and the corresponding stylesheet, run: For more information on using css-sprite with Grunt or Gulp (or many other environments), head over to the project’s repository on GitHub. I also prefer to avoid js for style/appearance and only use it for functionality. That way you’re only using one image, the spritesheet. Automated spritesheet generators are pretty cool, but I prefer the control over optimisation and compression you get by making them manually. I wish. You really have a great way of simplifying the this process.