7

我创建了一个圆角按钮,在 IE9 中渐变背景不是圆角的:

方形而不是圆形

这是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');
}

我怎样才能解决这个问题?

4

2 回答 2

1

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

JS 小提琴示例

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

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

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

于 2013-03-19T18:31:15.163 回答
1

IE9 是一个完美的浏览器;问题是使用旧filter样式。

它们从来都不是什么好东西,它们只是出于遗留支持的原因才真正留在 IE9 中。他们有很多怪癖,包括这个众所周知的。

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

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

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

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

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

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

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

无论如何,您可能应该提供备用纯色,但对于这个问题,我的钱是 CSS3pie 是最好的解决方案。

希望有帮助。

于 2013-03-19T20:21:48.227 回答