动画的透明度不上IE浏览器正常工作(Animate opacity doesn't work

2019-07-04 17:22发布

我试图用animate()来更改的高度和透明度div 。 在div在CSS图像背景。 它工作正常在Firefox和Safari浏览器,但是当我在IE中测试它已经被删除的背景。 这是我的代码:

if (jQuery.support.opacity) {
    jQuery('#list_box').animate({opacity: '1',height: '300px',top: newTop},{duration: 300});
} else {
    jQuery('#list_box').animate({filter: 'alpha(opacity=100)',height: '300px',top: newTop},{duration: 300});
}

我怎样才能解决这个问题呢?

Answer 1:

我的印象是,jQuery的完成了所有的不透明度支持的事情你下。 这是否工作对于所有浏览器?

$('#list_box').animate({opacity: '1',height: '300px',top: newTop},{duration: 300});


Answer 2:

你并不需要编写IE特殊处理程序,jQuery也都是为你在幕后:

jQuery('#list_box').animate({opacity: '1',height: '300px',top: newTop}, 300);

但是 :如果你有一个24位的透明PNG作为一种正在消失的背景图片,你需要知道,你不能合并filter: alpha与24位透明PNG(这jQuery的正确使用IE中的幕后) IE7或IE8。 我相信它周围的唯一方法是设置背景颜色(除transparent的对象),在其上使用filter: alpha

如何测试 :只需设置一个背景颜色#list_box加入这样的事情你以后你的CSS纯色background-image声明:

#list_box { background-color: red }

如果背景图像仍然存在,并且您#list_box正确动画(除丑恶背景)你知道问题是什么,将不得不寻找另一种方式来完成你想要的。



Answer 3:

我一直有同样的问题。 我迷迷糊糊进入了答案,当我设置不透明度为40%:

$('#list_box').stop().animate({opacity: '.4'},"slow");

我注意到,做出的不透明度跳转到100%,然后下降动画到40%。 尤里卡。

所以,现在我明确的不透明度设置为零动画之前:

$('#list_box').css({opacity:0}).stop().animate({opacity: '1'},"slow");

这动画顺利,除了文字还是在IE看起来可怕。

要清理的文字,我从动画后的CSS在IE中删除的不透明度。 这似乎清理文本颇有几分在IE6和IE8。

$('#list_box').css({opacity:0}).stop().animate({opacity: '1'},"slow",function(){
    //remove the opacity in IE
    jQuery.each(jQuery.browser, function(i) {
        if($.browser.msie){
            $('#list_box').css({opacity:''});
        }
    });
});

我在Parallels的Mac上测试它,在IE6和IE8。 一切似乎都在Mac上侧做工精细。



Answer 4:

很(非常)与后期的答案,但因为这是在谷歌的顶部,当我寻找在IE8一个jQuery v有生问题的帮助,我想我会在这里发布。

我的问题是连接到在IE中hasLayout的错误,并加入“显示:直列块”的元件将被褪色固定的问题。



Answer 5:

我有同样的排序这个问题的:

$('#nav li').hover(function() {
 $(this).stop().animate({opacity: '0.4'}, 'slow');
},
function() {
 $(this).stop().animate({opacity: '1'}, 'slow');
});

我只是增加浮动:左; 到#nav李CSS和固定的问题。



Answer 6:

jQuery中,一旦在div被设置成具有任一不透明度:0(在标准兼容的浏览器)或滤波器:α(不透明度= 0)在IE中,可以只使用

  $( '#DIV')动画({不透明度:1},100); 
由于jQuery的支持跨浏览器的支持,如果你最终动画通过IE的过滤器,然后有机会的jQuery正试图以支持IE和冲突来当jQuery的触发不透明度变化X2。

我希望这有帮助。 我有同样的问题,再加上IE浏览器不能够处理与在其多个项目一个div堆栈褪色奇怪的问题。



Answer 7:

我注意到这个问题是由位置造成的:容器的亲戚。 如果“开关”,以绝对的不透明度动画会工作。



Answer 8:

从来就有同样的问题与IE 7,问题是不透明度属性后的后逗号

jQuery(this).animate({opacity:1.00,},800);

它一定要是:

jQuery(this).animate({opacity:1.00},800);


Answer 9:

我发现,为我工作的解决方案: position:inline-block; 这适用于衰落的文本不透明度,我还没有使用CSS背景图像尝试过。 也许这有助于反正。

我只是想在报告因特网的小虫子与fadeTo方法Explorer 8中,如果您的“显示”元素设置为“内联”这是行不通的。 我发现,你需要把它放到“inline-block的”,然后它完美的作品。 没有任何关于这个在网络上,这不是我第一次有这样的问题。

不知道这是否是报告这个问题的正确方法,但我敢肯定有人会阅读这篇文章:)

在发现http://www.devcomments.com/IE-8-fadeTo-problem-with-inline-elements-to65024.htm



Answer 10:

我加入一个不透明的背景动画元素解决了这个问题:

CSS:

.overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 195px;
    height: 274px;
    cursor: pointer;
    background: #fff url('../images/common/image_hover.png') 0 0 no-repeat; /* the solution */
    opacity: 0;
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; /* IE8 */
    filter: alpha(opacity=0); /* IE6-7 */     
    zoom: 1;
}

JS:

$('.overlay').hover(
    function(){
        $(this).animate({'opacity': 0.7}, 300);
    },
    function(){
        $(this).animate({'opacity': 0}, 250);
    }
);

适用于IE7-8

希望这会帮助别人;)



Answer 11:

您可以使用fadeTo来完成你想做的事:

$('#list_box').fadeTo("slow", 0.33);

fadeInfadeOut做过渡,从0到100%,但上述将让你淡出到任意不透明。

( http://docs.jquery.com/Effects/fadeTo#speedopacitycallback )



Answer 12:

同样的问题与IE8。 加入“显示:直列块”来.hover2在固定的问题。

$(function() {

        $(".hover1").css("opacity","1.0"); // Default set opacity to 1.0

        // On Mouse over
        $(".hover1").hover( 
                            function () {

                                        // SET OPACITY TO 15%
                                        $("span.hover2").stop().animate({opacity: 0.15}, 1200);
                                        },

                                        // ON MOUSE OUT
                            function () {

                                        // SET OPACITY BACK TO 100%
                                        $("span.hover2").stop().animate({opacity: 1.0}, 1200);
                                        }
                         );
                }
     );


Answer 13:

好吧,这可能有助于一点点,我发现在这个网站有关的具体问题的解决方案http://blog.bmn.name/2008/03/jquery-fadeinfadeout-ie-cleartype-glitch/

总之,普遍的问题是在IE不透明度滤光器,在特定情况下有没有什么可以做,思想

但如果你淡入淡出,将防止你只需要去除过滤器属性jQuery函数添加WHE外汇结束的PNG背景图片的问题。 只需使用一个回调函数,这样的事情会做到这一点:

$('#node').fadeOut('slow', function() {<br/>
    this.style.removeAttribute('filter');<br/>
});

如果你选择返回多,使用的各项功能,是这样的:

$('.nodes').fadeIn('fast',
    function() {
        $(this).each (
            function(idx,el) {
                el.style.removeAttribute('filter');
             }
        );
     }
);


Answer 14:

你使用一些pngfix脚本? 这可能是罪魁祸首。



文章来源: Animate opacity doesn't work properly on IE