Is it really worth it? Is it really worth all the haggle and all that messy markup/CSS-code to save in a few bytes of image-files? I think not. I’d rather preffer ten image-files weighing a few kilobytes rather than having all that extra code to mess up my stylesheet and markup, especially on a large webpage with a complex layout.
You could do it server side (or probably with JS), though, but that again would leave far more work than just making it as images in the first place.
Nice method for experimenting, understanding and learning, but I dont think i will be using it a lot.
Copy & paste the code below to embed this comment.
Ashish Tiwari
nice article, and good concept to apply.
The part to make PNG work in IE using AlphaImageloader seems to be misplaced though.
Why would one require a filter to do other filters’ job, that too using external images?
please look up http://msdn.microsoft.com/workshop/author/filter/reference/filters/gradient.asp
My idea will be to get gradients in IE without using any imges, keep the PNG gradeient of FF and other browsers though.
Copy & paste the code below to embed this comment.
mike wright
Opera doesn’t like padding on the containing div—it seems to still apply the padding to the absolutely positioned image, but on the right side of the div. Removing the padding or placing it on another element (such as a nested span) apparently fixes this.
Sorry, but this time it wasn’t :( I frequently find ALA articles interesting, even when I can’t find them an inmediate use. But not this time.
When I became aware of what a PNG can do I tried this trick, but found most of the problems already mentioned in the article and the comments. But the worst, for me, is that it isn’t enough to mix a color with white or black to make it look good!
Considering that any 256×256 2-color PNG linear gradient is about 860 bytes long and that I can create it with 7 mouse clicks and a filename, I doubt I’ll bother with the second part of the article.
Copy & paste the code below to embed this comment.
Eric Brown
I can see maybe, maybe using this for mock-ups, but with today’s graphic tools, creating high-quality gradients is easy.
I really suggest avoiding this technique and making backgrounds with what they are intended: the background property. At least the background property is cross-platform and has very few issues with various layout techniques (floats, absolute positions, etc) where this method can easily break down.
Copy & paste the code below to embed this comment.
Roger Roelofs
I applaud the creativity, but it has a major down side. The img elements in the markup are not really content, but are shown as such by web clients that aren’t css aware or that have css turned off.
We needed scalable background images for a project several months ago and went with this technique. Our web site navigation now looks horrible in non-css browsers, like cell phones, lynx, or even ie/win in accessibility mode. it also probably makes users of screen readers unhappy.
Its a neat hack, but not a good production solution.
Copy & paste the code below to embed this comment.
Josh Pinkham
I mean, it works – yeah. And it’s a pretty good idea. Very original thought process. It just seems like so much extra work to achieve something you can do with a couple of seconds in photoshop with the gradient tool.
Great idea, really. Just seems a bit excessive to make a gradient.
I recently rediscovered the Power of PNG 24bit transparencies after running some wonderful tests in FireFox and went ga-ga over it. Of course I repeated the tests in IE 6 and wanted to cry… support for this is non existent without going above and beyond compliant mark up for CSS, I wonder how long IE7 will take to hit the masses hard with Windows Vista out. Then we can go Nuts!
Copy & paste the code below to embed this comment.
Boris Kuzmic
I must say that this technique is really great. It also inspired me to create blendy tabs, to use for site navigation. Take a look at:
http://www.boriskuzmic.com/index.php?p=projects_css_js
63 Reader Comments
Back to the ArticleArve Systad
Is it really worth it? Is it really worth all the haggle and all that messy markup/CSS-code to save in a few bytes of image-files? I think not. I’d rather preffer ten image-files weighing a few kilobytes rather than having all that extra code to mess up my stylesheet and markup, especially on a large webpage with a complex layout.
You could do it server side (or probably with JS), though, but that again would leave far more work than just making it as images in the first place.
Nice method for experimenting, understanding and learning, but I dont think i will be using it a lot.
Hiren Parmar
Learning CSS with this type of good article and demo is fun… great job!!
Thanks Matthew O’Neill.
Adam Koch
Why does this break in IE 6 when I remove the float:left from the .box? (It will still work in Firefox.)
Ashish Tiwari
nice article, and good concept to apply.
The part to make PNG work in IE using AlphaImageloader seems to be misplaced though.
Why would one require a filter to do other filters’ job, that too using external images?
please look up http://msdn.microsoft.com/workshop/author/filter/reference/filters/gradient.asp
My idea will be to get gradients in IE without using any imges, keep the PNG gradeient of FF and other browsers though.
mike wright
Opera doesn’t like padding on the containing div—it seems to still apply the padding to the absolutely positioned image, but on the right side of the div. Removing the padding or placing it on another element (such as a nested span) apparently fixes this.
An example: http://prisoner34.com/blendy/
Antonio Bueno
Sorry, but this time it wasn’t :( I frequently find ALA articles interesting, even when I can’t find them an inmediate use. But not this time.
When I became aware of what a PNG can do I tried this trick, but found most of the problems already mentioned in the article and the comments. But the worst, for me, is that it isn’t enough to mix a color with white or black to make it look good!
Considering that any 256×256 2-color PNG linear gradient is about 860 bytes long and that I can create it with 7 mouse clicks and a filename, I doubt I’ll bother with the second part of the article.
Marcus Ringer
… some Browsers don’t support the transparency of PNGs?
Eric Brown
I can see maybe, maybe using this for mock-ups, but with today’s graphic tools, creating high-quality gradients is easy.
I really suggest avoiding this technique and making backgrounds with what they are intended: the background property. At least the background property is cross-platform and has very few issues with various layout techniques (floats, absolute positions, etc) where this method can easily break down.
Roger Roelofs
I applaud the creativity, but it has a major down side. The img elements in the markup are not really content, but are shown as such by web clients that aren’t css aware or that have css turned off.
We needed scalable background images for a project several months ago and went with this technique. Our web site navigation now looks horrible in non-css browsers, like cell phones, lynx, or even ie/win in accessibility mode. it also probably makes users of screen readers unhappy.
Its a neat hack, but not a good production solution.
Rob ll
It uses a CSS hack.
I never have used hacks in any of my css. Never will.
I will see if I can come up with the same technique and no hacks.
Josh Pinkham
I mean, it works – yeah. And it’s a pretty good idea. Very original thought process. It just seems like so much extra work to achieve something you can do with a couple of seconds in photoshop with the gradient tool.
Great idea, really. Just seems a bit excessive to make a gradient.
David Martinez
I recently rediscovered the Power of PNG 24bit transparencies after running some wonderful tests in FireFox and went ga-ga over it. Of course I repeated the tests in IE 6 and wanted to cry… support for this is non existent without going above and beyond compliant mark up for CSS, I wonder how long IE7 will take to hit the masses hard with Windows Vista out. Then we can go Nuts!
Boris Kuzmic
I must say that this technique is really great. It also inspired me to create blendy tabs, to use for site navigation. Take a look at:
http://www.boriskuzmic.com/index.php?p=projects_css_js