IE9中的渐变不是四舍五入的

时间:2013-03-19 14:16:34

标签: css3 internet-explorer-9 rounded-corners css

我创建了一个圆角按钮,在IE9中渐变背景没有舍入:

Square instead of rounded

这是CSS:

.search button {
    padding: 10px;
    font-family: "OpenSansSemibold", "Helvetica", Arial, sans-serif;
    font-size: 16px;
    display: inline-block;
    outline: none;
    cursor: pointer;
    text-align: center;
    text-decoration: none;
    padding: .5em 2em .55em;
    text-shadow: 0 1px 1px rgba(0,0,0,.3);
    -webkit-border-radius: .5em; 
    -moz-border-radius: .5em;
    border-radius: .5em;
    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
    -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
    box-shadow: 0 1px 2px rgba(0,0,0,.2);
    color: #fef4e9;
    border: solid 1px #da7c0c;
    background: #f78d1d;
    background: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20));
    background: -moz-linear-gradient(top,  #faa51a,  #f47a20);
    filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20');
}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

从css类中删除过滤器样式。

JS Fiddle Example

如果你想要IE8及以下的渐变,那么你需要创建一个单独的CSS文件并将其包装在其中:

<!--[if lte IE 8]>
[css path here]
<![endif]-->

IE9中不能同时具有渐变和圆角按钮。事实上,Twitter的Bootstrap框架将IE9按钮降级为带圆角的纯色背景。

答案 1 :(得分:1)

IE9是一个非常好的浏览器;问题是使用旧的filter样式。

它们从未有过任何好处,而且由于遗留支持的原因,它们只是留在IE9中。他们有许多怪癖,其中包括一个众所周知的怪癖。

你的问题是IE9不支持标准的CSS渐变,所以问题是如果你想使用它们,该怎么办而不是filter

有各种答案,但最好的答案是CSS3Pie

这是一个小的JavaScript库,允许您在IE9中使用标准的CSS渐变(以及IE6以后的所有其他IE版本)。它还为不支持它们的IE版本添加了border-radiusbox-shadow

它不引人注目,并且不会在其他浏览器中造成任何额外开销。

CSS3Pie使用IE的矢量图形语言VML渲染其渐变,因此它不受filter bug的影响。

如果您真的想避免使用Javascript,可以使用渐变为自己创建VML或SVG元素。这可以使用URI编码的图像在CSS中完成(例如here)。但是让CSS3Pie为你做的更容易。

您可以使用的唯一其他解决方案是加载旧式背景图形,或仅提供纯色背景颜色作为后备选项。

你可能应该提供后备纯色,但对于这个问题,我的钱是CSS3pie是最好的解决方案。

希望有所帮助。