IE8不透明度问题

时间:2011-10-03 08:33:30

标签: html css internet-explorer-8

据我所知,这里有关于IE上不透明度问题的无数问题。我几乎和他们一起经历了几乎所有可用的方法,但我没有尝试过,但没有任何效果。

最奇怪的是,不透明度问题是一个孤立的案例,仅在IE8上发生; IE7没有任何问题。在我继续谈论我面临的问题之前,让我在一个单页HTML网站上向我展示我的标记示例:

这是控制有问题DIV的不透明度的CSS:

#home, #services, #freeport, #about-us, #advantage, #contact{
        opacity:0;
        -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
        filter: alpha(opacity=0);
        width:400px;
        zoom:1;
    }

这是我用来控制不透明度设置的JQUERY:

$(document).ready(function(){ //fades in the menu div first followed by the home div

    (function _loop( nodelist ) {
    $( nodelist.shift() ).fadeTo( 2400, 1, function() {
        _loop( nodelist );
    });
    }( ["#menu", "#home"] ));

    $("#about-us-button").click(function(){ //upon clicking the home button, fades in the home div and fades out the rest of the divs
          $("#about-us").fadeTo(900, 1);
          $("#home, #freeport, #advantage, #services, #contact").fadeTo(1000, 0);
    });

});

注意:我只显示#about-us div在点击#about-us-button后如何消失;其余部分的工作方式相同。还省略了HTML,因为它非常简单 - DIV容器包含一些文本,就是这样。

因此,应用上面提到的CSS样式,我设法让DIV出现在除IE8之外的所有浏览器(包括IE7)中的正确实例中。

最让我感到困惑的是,过滤器在IE7中工作,但是-ms-filter,据说是IE8特定的,无法正常工作。我已经阅读了有关HasLayout问题并且应用了所有方法无济于事。我还确保-ms-filter在过滤之前出现但是也没有用。

我还试图让IE8使用元标记方法模拟IE7,但不幸的是,这也失败了。

应该注意的是,我已将其标记为HTML5,在遇到此问题之后,我将其标记为XHTML 1.0 Transitional和HTML 4.0,但没有任何效果 - 甚至IE8都不是IE7方法。

任何人都知道如何解决这个问题?先谢谢你们!

1 个答案:

答案 0 :(得分:1)

不久前我遇到了类似的问题。我不记得确切的细节,但我相信发生的事情是jQuery会在元素级别设置不透明度值,在淡入时不断更改它 - 然后一旦淡入淡出完成就会将属性留在那里,但是空白,覆盖CSS文件的不透明度。您应该可以使用Firebug或Chrome中的Element Inspector对此进行双重检查。

我相信这就是我用来修复错误的方法,强制jQuery在完成后清理该属性,这样我的CSS文件中指定的opacity属性才能真正生效。当然,调整它以适合您的代码。

$("#darkbg, #popup-movie-panel").fadeIn(300, function(){
        if(jQuery.browser.msie) {
            this.style.removeAttribute('filter');
            }
        })