internet-explorer - 如何让渐变在 IE9 中工作?

标签 internet-explorer css

CSS:

.silver {
color: #636363;
border: solid 1px #9C9C9C;
background: #D6D6D6;

/*important part*/
background: -webkit-gradient(linear, left top, left bottom, from(#E8E8E8), to(#BABABA));
background: -moz-linear-gradient(top,  #E8E8E8,  #BABABA);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8', endColorstr='#bababa')";
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e8e8e8', endColorstr='#bababa');

padding: 2px 5px 2px 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
margin-right: 5px;
font-size: 95%;
}

当我将类应用于输入/提交按钮时,这会起作用,但是当我将类应用于 span 或 div 时,渐变不显示。如何让渐变在 IE9 中正常工作?

最佳答案

IE9发布时,本应预示着IE的新曙光;一个支持其他人多年来一直支持的所有新 Shiny 浏览器功能的版本。

好消息是它在很大程度上成功了。

坏消息是他们在 CSS 渐变方面失误了。 IE9 不支持它们。但也不支持旧的 IE6/7/8 hack 通过 filter 属性使渐变工作。

有一个解决方案。您可以将 SVG 图像渲染到背景中,这意味着您可以简单地创建一个带有渐变的 SVG 并进行排序。但是等等,事情没那么简单;如果你有 filter 属性来支持 IE8 和 friend ,你实际上需要摆脱它才能使 SVG 技巧与 IE9 一起工作。

此时一切都变得有点复杂。您需要条件注释、不同 IE 版本的单独样式表,或其他一些解决问题的方法。

或者您可以使用 CSS3Pie .这是一个小的 Javascript 实用程序,它为各种版本的 IE 添加了对许多 CSS 功能的支持。其中一项功能是 CSS 背景渐变。

使用 CSS3Pie,您可以简单地使用标准 CSS background 属性,渐变将在所有 IE 版本中正常工作,就像在其他浏览器中一样。

它适用于从 6 到 9 的所有版本的 IE,因此除了不必乱用我之前描述的 SVG hack 之外,您还可以放弃那种困惑的 filter 样式。这是一场全面的胜利。我建议您将其作为解决方案。

但是,如果您决定宁愿使用适用于 IE9 的 SVG 渐变来使用困难的方法,那么这里有一个站点链接,它将为您生成 CSS 代码:http://www.colorzilla.com/gradient-editor/勾选“支持 IE9”复选框以查看您需要的代码,但还要注意同时出现的警告文本和进一步说明。

希望对您有所帮助。

关于internet-explorer - 如何让渐变在 IE9 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13130517/

相关文章:

css - 在 IE 中悬停之前,导航链接显示的边距错误

css - 对于相同的效果,哪种 CSS3 规则是更好的选择?

javascript - 展开可折叠的 div 后阻止 ui

javascript - 我如何找出是什么减慢了我在 IE7 中的页面加载速度

javascript - 返回的 AJAX html 中断 IE 点击事件

jquery 颜色交换在 IE 中不起作用

javascript - 在 URL 重写期间阻止 IE/FF 处理 anchor ?

html - float 的 CSS 框

html - 忽略一些用于计算 HTML 表格列宽的单元格

html - 表格只接受绝对(像素)值而不接受相对(百分比)值