0

我在我的 CSS 中使用这个属性来为 IE 创建一个渐变。

.icons,
#nav {
filter: progid:DXImageTransform.Microsoft.gradient(   startColorstr='#9e9ccf', endColorstr='#423f88', GradientType=0 ); /* IE6-9 */
}

应用后,我可以看到预期的漂亮渐变。但是,我的图标不再应用边框半径,我的 #nav z-index 失败,我的子菜单无法按预期加载并根据 #nav 高度和宽度被剪裁。在所有 IE 中。

4

1 回答 1

0

IE 的旧专有filter样式与border-radius. 他们使用具有方角的 activeX 控件并覆盖您可能尝试使用的任何圆角。这是一个已知的错误,没有解决方法。

作为一个activeX 控件的另一个问题filter是它带有activeX 控件所具有的所有错误和怪癖。这包括搞乱分层和其他类似的有趣的东西。filter我的建议是不惜一切代价避免使用。

我会注意到,border-radius无论如何只能在 IE9 上工作,所以你的问题不适用于 IE8 或更早版本。

解决方案:我建议您尝试CSS3Pie。这是一个插入 IE6 - IE9 的 javascript 库,并为这些浏览器提供对标准 CSS3 渐变的更好支持。它使用 VML 图形来完成,因此不需要使用filter,因此没有filter渐变可​​能导致的错误。(它确实有一些自己的怪癖,但相比之下它们是次要的,很容易解决,并且在 CSS3Pie 网站上有很好的记录)。另一个好处是它允许您对所有浏览器(包括旧版 IE)使用标准 CSS 代码。大胜。

哦,它也border-radius适用于 IE6-8,这对您来说是一个额外的好处。(是的,它适用于渐变)

希望有帮助。

于 2013-04-17T11:01:59.513 回答