【问题标题】:Mootools 1.3 Fx.Morph 'opacity' not working in IE8Mootools 1.3 Fx.Morph“不透明度”在 IE8 中不起作用
【发布时间】:2011-05-09 04:26:35
【问题描述】:

http://jsfiddle.net/hL6rT/1/

我创建了 div,其中包含一个绝对定位的图像,其想法是让图像像脉冲一样淡入淡出。一切顺利,直到 IE8 出现。

查看代码链接。在 FF 中工作正常,也就是说 div 在一个连续的循环中淡入淡出。但在 IE8 中它会淡入淡出一次然后停止。

在带有 mootools 1.2.5 的 FF 和 IE8 中运行良好,但不是 1.3 或 1.3 兼容模式。

由于某些奇怪的原因,如果“fadeIn”之后的警报包含在 onComplete 中,该函数将在“fadeOut”onComplete 中显示警报和第二个警报,但仍然不会淡化 div。

帮助?

【问题讨论】:

    标签: internet-explorer-8 mootools opacity


    【解决方案1】:

    通过 oncomplete 对元素进行补间来制作闪烁效果可能更容易:

    http://jsfiddle.net/hL6rT/2/

    var fadeImg = document.id('lucy');
    
    fadeImg.set("tween", {
        duration: 2000,
        transition: Fx.Transitions.Quint.easeIn,
        onComplete: function() {
            this.element.fade(this.element.getStyle("opacity") == 0 ? 1 : 0);
        }
    }).fade(0);
    
    // how you can cancel it 
    document.id("stop").addEvent("click", function(e) {
        e.stop();
        fadeImg.get("tween").cancel(); // this cancels it.
    });
    

    修复您的版本: http://jsfiddle.net/hL6rT/4/

    如果将不透明度的初始值设置为 0,则可以正常工作

    var fadeImg = document.id('lucy').setStyle("opacity", 0);
    
    var fadeIn = function() {
        var inDiv = new Fx.Morph(fadeImg, {
            link: 'cancel',
            duration: 2000,
            transition: Fx.Transitions.Quint.easeIn,
            onComplete: function() {
                fadeOut();
                //alert('FadeIn Complete');
            }
        }).start({
            'opacity': ['0', '1']
        });
    };
    
    var fadeOut = function() {
        var outDiv = new Fx.Morph(fadeImg, {
            link: 'cancel',
            duration: 2000,
            transition: Fx.Transitions.Quint.easeOut,
            onComplete: function() {
                fadeIn();
                //alert(FadeOut Complete!');
            }
        }).start({
            'opacity': ['1', '0']
        });
    };
    
    fadeIn();
    

    update IE 似乎并不总是喜欢这种被链接的特定转换。您可能需要删除它并使用默认的。

    【讨论】:

    • +1 对于@Dimitar。另外,我喜欢 link-to-jsfiddle 如何成为这里的东西!
    • 没有。您的两种解决方案都不适用于带有 Mootools 1.3 的 IE8
    • 这很奇怪,在 ie8 中对我来说没问题。但在 ie7 中,如果存在特定的 fx.transition 转换,则不会。一旦我删除它,它似乎很好。 jsfiddle.net/hL6rT/8
    • 很好奇,如果 fx.transition 引用被删除,它在 IE8 中对我有用。然而现在“transition: 'quint:in'”也可以工作了。
    猜你喜欢
    • 1970-01-01
    • 2014-10-05
    • 2012-05-04
    • 2012-04-23
    • 2012-09-04
    • 2012-03-26
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多