IE8中的CSS渐变禁用我的下拉菜单
有关网站: 有点背景。。。这是一个为客户开发的网站,我正在MODx中使用Wayfinder扩展作为菜单,使用Ultimate下拉菜单作为子菜单。我正在使用CSS渐变为菜单生成漂亮的背景色 我的问题是,在IE8中,当我加入“过滤器”渐变背景色时,标题导航不显示下拉菜单。只有IE8浏览器存在此问题;甚至IE7也能正常工作。从技术上讲,下拉菜单是存在的,因为光标可以单击子菜单链接,但浏览器拒绝显示它们 我已经通过使用IE8的重复背景图像解决了这个问题,但我真的不想走这条路;我确信应该有一个CSS解决方案,这就是为什么我要发布这个;我的好奇心被激发了,我想看看真正的问题是什么 我能够追踪到这一行代码的问题:IE8中的CSS渐变禁用我的下拉菜单,css,internet-explorer-8,Css,Internet Explorer 8,有关网站: 有点背景。。。这是一个为客户开发的网站,我正在MODx中使用Wayfinder扩展作为菜单,使用Ultimate下拉菜单作为子菜单。我正在使用CSS渐变为菜单生成漂亮的背景色 我的问题是,在IE8中,当我加入“过滤器”渐变背景色时,标题导航不显示下拉菜单。只有IE8浏览器存在此问题;甚至IE7也能正常工作。从技术上讲,下拉菜单是存在的,因为光标可以单击子菜单链接,但浏览器拒绝显示它们 我已经通过使用IE8的重复背景图像解决了这个问题,但我真的不想走这条路;我确信应该有一个CSS解决方
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1e5799', endColorstr='#7db9e8',GradientType=0 ); /* IE6-8 */
一旦我从下面的代码块中删除这一行,下拉菜单在IE8中就可以正常工作,但是渐变会消失:
#header_menu {
background: -moz-linear-gradient(top, #003764 0%, #3b6b89 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#003764), color-stop(100%,#3b6b89)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #003764 0%,#3b6b89 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #003764 0%,#3b6b89 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #003764 0%,#3b6b89 100%); /* IE10+ */
background: linear-gradient(to bottom, #003764 0%,#3b6b89 100%); /* W3C */
background-color: #003764; /* Old browsers */
height: 38px;
width: auto;
}
我在HTML和CSS中尝试了许多修复,包括各种渐变安排、将渐变应用于不同元素、将各种高度/宽度/位置值应用于容器和菜单、使用z索引值、添加额外块等
最后,它似乎总是回到“过滤器”行(我甚至尝试了-ms-filter-)
如果您想要任何其他代码片段,请告诉我。这是一个非常有趣的问题,我真的很想解决它。老实说,使用IE的
过滤器总是自找麻烦——它有一大堆bug和怪癖,可能会意外地破坏其他东西
那么你有什么选择
- 您可以尝试使用CSS3Pie渲染渐变。它使用VML而不是过滤器,因此不会出现同样的错误。(或者您可以自己编写VML代码,但那会很乏味)
- 或者你可以在IE8中使用渐变图形。您可以安排CSS代码,使标准CSS渐变覆盖背景图形,以便其他浏览器可以继续使用CSS渐变,而不需要了解图形
- 或者你可以接受IE8是一个旧的浏览器,给它一个普通的背景而不是渐变。它看起来可能没那么漂亮,但它仍然可以工作,而且现在仍在使用IE8的人们可能已经习惯于看到那些看起来不尽如人意的网站
是的,过滤线确实有问题,最好使用图像