我创建了一个圆角按钮,在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');
}
我该如何解决这个问题?
答案 0 :(得分:1)
从css类中删除过滤器样式。
如果你想要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-radius
和box-shadow
。
它不引人注目,并且不会在其他浏览器中造成任何额外开销。
CSS3Pie使用IE的矢量图形语言VML渲染其渐变,因此它不受filter
bug的影响。
如果您真的想避免使用Javascript,可以使用渐变为自己创建VML或SVG元素。这可以使用URI编码的图像在CSS中完成(例如here)。但是让CSS3Pie为你做的更容易。
您可以使用的唯一其他解决方案是加载旧式背景图形,或仅提供纯色背景颜色作为后备选项。
你可能应该提供后备纯色,但对于这个问题,我的钱是CSS3pie是最好的解决方案。
希望有所帮助。