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.


Amazing post…!!!
I always avoided using gradients due to images and large amount of CSS but this is a different case. Only with 4 lines of CSS we can get our desired gradient scheme. This works fine in all major browsers except opera. For opera we have to write this line
background-image: -o-linear-gradient(rgb(170,170,170),rgb(0,0,0));
thanks and congratulations for the beautiful site
Thank You Very Much
How would you manage something like the BG on http://www.fundfone.com. Currently the website takes a while to load with that image, what code should be inserted to improve loading time with CSS3 and Gradient Effect? Can anyone help?The gradient isn’t as straight as the article has written. There are a couple of light/dark effects. Thanks guys!
Hi, this works great for me in firefox – i have it fixed so the gradient is the length of the viewport and stays the same as you scroll down. However, in IE, the background won’t stay fixed, extends the length of the body and doesn’t seem to respond to the background-position 0px 100px. Any advice on a workaround would be greatly appreciated.
csichsckl
DDGDFH
Please add the standard HTML5 method in addition to the browser specific methods. Never use just the browser specific methods and leave future/current browsers that follow the spec without vendor specific code out in the cold.
Excellent post man!
thanks for sharing this with us.