Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE8中的CSS渐变禁用我的下拉菜单_Css_Internet Explorer 8 - Fatal编程技术网

IE8中的CSS渐变禁用我的下拉菜单

IE8中的CSS渐变禁用我的下拉菜单,css,internet-explorer-8,Css,Internet Explorer 8,有关网站: 有点背景。。。这是一个为客户开发的网站,我正在MODx中使用Wayfinder扩展作为菜单,使用Ultimate下拉菜单作为子菜单。我正在使用CSS渐变为菜单生成漂亮的背景色 我的问题是,在IE8中,当我加入“过滤器”渐变背景色时,标题导航不显示下拉菜单。只有IE8浏览器存在此问题;甚至IE7也能正常工作。从技术上讲,下拉菜单是存在的,因为光标可以单击子菜单链接,但浏览器拒绝显示它们 我已经通过使用IE8的重复背景图像解决了这个问题,但我真的不想走这条路;我确信应该有一个CSS解决方

有关网站:

有点背景。。。这是一个为客户开发的网站,我正在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的人们可能已经习惯于看到那些看起来不尽如人意的网站


是的,过滤线确实有问题,最好使用图像