IE9圆角和CSS背景渐变共同生活?

dv8*_*hn8 15 html css3 conditional-comments internet-explorer-9

我在IE9中遇到了一个奇怪的事情,想要显示背景渐变.

基本上我正在将多个类应用于容器对象.

<div class="gradient corners"></div>
Run Code Online (Sandbox Code Playgroud)

使用这个CSS.

.gradient {
background-color: #96A7C5;
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0.19, #6C86AD),
color-stop(0.6, #96A7C5)
);
background-image: -moz-linear-gradient(
center bottom,
#75A33A 19%,
#8DC447 60%
);

.corners {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
}
Run Code Online (Sandbox Code Playgroud)

为了获得IE中的渐变,我将过滤器垃圾应用于我的.gradient类.

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8DC447', endColorstr='#75A33A');
Run Code Online (Sandbox Code Playgroud)

有了它,渐变起作用,但我的圆角消失了.

所以我尝试为过滤器声明设置条件.

<!--[if IE]>
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#8DC447', endColorstr='#75A33A');
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

这带回了我的角落,但渐变消失了.

小智 25

在IE9中,渐变将会出现圆角,因此现在最好的解决方案是添加一个额外的div:

 <div class="corners"><div class="gradient"></div></div>
Run Code Online (Sandbox Code Playgroud)

并为.corners隐藏溢出

.corners {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;

overflow: hidden;
}
Run Code Online (Sandbox Code Playgroud)

我推荐这个类似Photoshop的工具来创建跨浏览器渐变:http://www.colorzilla.com/gradient-editor/

而这一个创建border-radius:http: //border-radius.com/