The CSS gradient feature was introduced by Webkit for about two years but was rarely used due to incompatibility with most browers. But now with the Firefox 3.6+, which supports gradient, we can style create gradient without having to create an image. This post will show you how to code for the CSS gradient to be supported by the major browsers: IE, Firefox 3.6+, Safari, and Chrome. Also, check out my updated dropdown menu (demo) using CSS gradient.
For Webkit Browsers
The following line of code is for webkit browsers such as Safari, Chrome, etc. It will display a linear gradient from top (#ccc) to bottom (#000).
background: -webkit-gradient(linear, left top, left bottom, from(#ccc), to(#000));

For Firefox 3.6+
background: -moz-linear-gradient(top, #ccc, #000);

For Internet Explorer
The following filter wlil only be read by IE:
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#000000');

Cross-Browser CSS Gradient (demo)
Put the three lines of code from above together and the result is a cross-browser gradient box. Note: I added a background rule at the very top in case the user is using a browser that doesn't support the feature.
background: #999; /* for non-css3 browsers */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#000000'); /* for IE */
background: -webkit-gradient(linear, left top, left bottom, from(#ccc), to(#000)); /* for webkit browsers */
background: -moz-linear-gradient(top, #ccc, #000); /* for firefox 3.6+ */
CSS Gradient Dropdown Menu
Below is a pure CSS gradient dropdown menu using CSS3 text-shadow, radius-border, and box-shadow (no Javascript or image)
Internet Explorer Limitations
Internet Explorer gradient filter doesn't support color-stop, gradient angle, and radial gradient. That means you can only specify either horizontal or vertical linear gradient with 2 colors: StartColorStr and EndColorStr.
Final Remarks
Please note not all browsers support CSS gradient. To be safe, you shouldn't rely on CSS gradient when coding the layout. It should only be used for enhancing the layout.


OK thanks
Very useful! Thank you
That is awesome. Thanks so much for posting that. I was just about to get into photoshop to create the old school gradiant image that is a nightmare when vertical as it’s never the right length and I thought to myself, now that was years ago we had to do that. Perhaps there is a CSS technique by now. And there you were, thanks mate
Rich
Thanks so much for posting that. I was just about to get into photoshop to create the old school gradiant image that is a nightmare when vertical as it’s never the right length and I thought to myself, now that was years ago we had to do that.
This is actually great! I have been searching for this a long time.
you forgot about Opera.
i use this solution
http://css3please.com/
Thanks Brian
Thanks for the great advice and tutorial! I did find that Opera was left out of the picture and the same gradient effect is achievable via:
background-image: -o-linear-gradient(top,rgb(100,100,100),rgb(200,200,200)); /* Opera CSS3 */
Thanks!
Hiiiiiiii
Thank you, very usefull!
Thanks for the post.
want to know more on this topic.
You forgot about IE 8 that uses -ms-filter for god knows what reason…
Ex: -ms-filter: progid:DXImageTransform.Microsoft.gradient(
startColorstr=#550000FF, endColorstr=#550000FF
The weird hex code coulours (with 8 digit instead of 6) is just for transparency…
I got this at http://stackoverflow.com/questions/2293910/css3-transparency-gradient
i just want to make it 334 (comments) …and awesome tutorial
many thanks man, it really help me a lot :)
tyty. was just about to revert to using a photoshop gradient image as a background which likely would of looked horrible and taken much more time :s
I was looking at replacing my gradient background image with a pure CSS solution, but seeing all the differences in implementation between browsers has put me off.
I’ve seen firsthand the demo, very impressive
thank you for this information
Great. Thank for share.
Magnificent goods from you, man. I have understand
your stuff previous to and you’re just extremely great. I actually like what you have acquired here, really like what you are stating and the way in which you say it. You make it enjoyable and you still care for to keep it wise. I can not wait to read much more from you. This is really a terrific website.
Oh NO!
Why on EARTH would you make a “cross-browser” solution that ONLY includes the browser specific declarations? ALWAYS include the normal spec declaration as well or else you are setting it up to only work up until universal adoption. Meaning that your solution will work UNTIL this becomes the norm in browsers, then it will STOP WORKING! That’s HORRID!
wer
Well, considering Microsofts attitude to universal adoption, it will take a while. In the meantime, it worked great for me.
Thanks