Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get my CSS linear gradient to work in IE?

Tags:

css

I've got a link that I want to make look like a button with round corners and a gradient fill. It works fine in Chrome, but not in IE.

I've found that if I set display: inline-block, it shows the gradient, but removes the rounded corners. Does anybody know how to get around this issue in IE?

Demo in JSFiddle

HTML:

<a href="" class="button-gold-med">Hello World</a>​

CSS:

a {    
    color: white;
    padding: 8px;

    background: #7db9e8;
    background: -webkit-gradient(linear, left top, left bottom, from(#7db9e8), to(#1e5799));
    background: -webkit-linear-gradient(top, #7db9e8, #1e5799);
    background: -moz-linear-gradient(top, #7db9e8, #1e5799);
    background: -ms-linear-gradient(top, #7db9e8, #1e5799);
    background: -o-linear-gradient(top, #7db9e8, #1e5799);
    background: linear-gradient(top, #7db9e8, #1e5799);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7db9e8', endColorstr='#1e5799',GradientType=0);
    zoom: 1;

    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;

    -moz-background-clip: padding;
    -webkit-background-clip: padding-box;
    background-clip: padding-box;
}
like image 790
Brian Avatar asked Jun 07 '12 01:06

Brian


People also ask

Does linear gradient work on all browsers?

All desktop browsers including Internet Explorer 11 and Microsoft Edge provide browser support for Linear CSS Gradients, meaning these CSS Gradients offer excellent cross browser compatibility.

How do you control a linear gradient in CSS?

The linear-gradient() function sets a linear gradient as the background image. To create a linear gradient you must define at least two color stops. Color stops are the colors you want to render smooth transitions among. You can also set a starting point and a direction (or an angle) along with the gradient effect.

Can you use CSS variables in linear gradient?

I also snuck in an example of putting a list of colors into a CSS variable to use in a linear-gradient() , because you can totally do that, too!


2 Answers

You need to use the Microsoft filter:

 filter: progid:DXImageTransform.Microsoft.Gradient(startColorstr='#7db9e8', endColorstr='#1e5799');

Use that as a fallback for IE--it works in most versions.

See the specifications:
http://msdn.microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx

like image 68
zdebruine Avatar answered Nov 14 '22 23:11

zdebruine


I know this question is quite old, however since it is unaswered and if this can help people, here is my solution to get a linear Gradient working in all mayor Browsers:

/* IE10 Consumer Preview */ 
background-image: -ms-linear-gradient(top, #FFFFFF 0%, #BDBDBD 100%);

/* Mozilla Firefox */ 
background-image: -moz-linear-gradient(top, #FFFFFF 0%, #BDBDBD 100%);

/* Opera */ 
background-image: -o-linear-gradient(top, #FFFFFF 0%, #BDBDBD 100%);

/* Webkit (Safari/Chrome 10) */ 
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0,     #FFFFFF), color-stop(1, #BDBDBD));

/* Webkit (Chrome 11+) */ 
background-image: -webkit-linear-gradient(top, #FFFFFF 0%, #BDBDBD 100%);

/* W3C Markup, IE10 Release Preview */ 
background-image: linear-gradient(to bottom, #FFFFFF 0%, #BDBDBD 100%);

There is also an onlie tool to create this CSS gradients, chek it here:

http://ie.microsoft.com/Testdrive/Graphics/CSSGradientBackgroundMaker/Default.html

like image 39
Jhollman Cutcsa Avatar answered Nov 15 '22 01:11

Jhollman Cutcsa