正在转换flash动画到的jquery#

我基本上的div它们是不同的颜色的一个负载,我想的div淡入和缩小,每个格具有基于fibonachi序列不同的定时,

我有分配淡入淡出功能到div问题,我想淡入函数淡出DIV则当褪色它在再次完成,并不断重复该过程为每个格。

下面是我当前的代码,但它崩溃的Firefox,可能与有这么多setintervals任何人都可以点我朝着正确的方向吗?

我做
var myDiv ='#bannerHolder'
    var fib_str = '1, 2, 3, 5, 8, 13, 21, 1, 2, 3, 5, 8, 13, 21, 1, 2, 3, 5, 8, 13, 21, 1, 2, 3, 5, 8, 13'
    var widths_str = '33px, 31px, 35px, 9px, 16px, 50px, 33px, 24px, 40px, 20px, 63px, 30px, 10px, 29px, 11px, 12px, 51px, 31px, 35px, 11px, 14px, 50px, 30px, 25px, 38px, 20px, 35px'
    var pos_str = '0px, 44px, 105px, 144px, 153px, 203px, 236px, 269px, 280px, 354px, 374px, 437px, 447px, 457px, 506px, 517px, 529px, 604px, 646px, 687px, 698px, 712px, 762px, 787px, 823px, 895px, 915px'
    var color_str = '#D5E1D7, #18D4C9,#BF51C3,#1E82C9, #EDEDED, #E1C981, #C9A94F, #BDBCAA, #5DB522, #EB2F34, #823133, #004BD8, #A6A0A0, #DS9F36, #FFDB00, #69944F, #18D4C9, #BF51C3, #1E82C9, #6B949A, #FFDB00, #819E64, #BDBCAA, #54BA43, #EB2F34, #823133'
    var width = widths_str.split(",");
    var pos = pos_str.split(",");
    var color = color_str.split(",");
    var fib = fib_str.split(",");
    console.log(width);
    console.log(pos);
    console.log(color);
    var counter = width.length
    var stopper = false;
          for(i=0;i<counter;i++){
        var html = '<div id ="stripe'+i+'"/>'   
        $(myDiv).append(html)
        $('#stripe'+i).css({  'top': 0,  'left': pos[i],'position': 'absolute', 'float': 'left', 'background-color' : color[i]})
        $('#stripe'+i).attr({'height': 100, 'width': width[i], 'min-width' : width[i], 'min-height' : '100px'  })
        $('#stripe'+i).width(width[i])
        $('#stripe'+i).height('100px')
        var myfibtime = (fib[i] * 200);
        setInterval(stripeFadeOut(i), myfibtime );
                setInterval(stripeFadeIn(i), myfibtime );
    };
    function stripeFadeOut(id){
        $('#stripe'+id).fadeOut('slow');
        var myfibtime = (fib[id] * 200);
    }
    function stripeFadeIn(id){
        $('#stripe'+id).fadeIn('slow');
        var myfibtime = (fib[id] * 200);
    }

})

如果我使用setInterval('stripeFadeIn(' + id + ')', myfibtime+';我得到stripeFadeIn未定义,如果我尝试使用.animate马修作为suguested我得到太多的递归调用

有帮助吗?

解决方案

如你在你的循环以及在setFadeIn函数原因指数地创建间隔对象创建间隔对象。通过浏览器崩溃最终结束。

相反,你可以做一件事在循环本身,创建两个间隔即一个用于淡出,一个用于淡入。 insted的“慢”的,使用您选择的几毫秒。

然后,你的淡出应当在每个myfibtime + animatingMilliseconds = fadeOutInterval调用。而你的淡入应该呼吁每个fadeOutInterval + animatingMilliseconds。

我希望这会帮助你。

我的建议完全是指你的旧代码。所以,做这样的

for(i=0;i<counter;i++){
        var html = '<div id ="stripe'+i+'"/>'   
        $(myDiv).append(html)
        $('#stripe'+i).css({  'top': 0,  'left': pos[i],'position': 'absolute', 'float': 'left', 'background-color' : color[i]})
        $('#stripe'+i).attr({'height': 100, 'width': width[i], 'min-width' : width[i], 'min-height' : '100px'  })
        $('#stripe'+i).width(width[i])
        $('#stripe'+i).height('100px')
        var myfibtime = (fib[i] * 200);
        var animTime = 1500;
        var fadeOutInterval = myfibtime + animTime;
        var fadeInInterval = fadeOutInterval  + animTime;
        setInterval(stripeFadeOut(i), fadeOutInterval );
        setInterval(stripeFadeIn(i), fadeInInterval );
    };
    function stripeFadeOut(id){
        $('#stripe'+id).fadeOut(1500);            
    }
    function stripeFadeIn(id){
        $('#stripe'+id).fadeIn(1500);
    }

其他提示

我建议你寻找到jQuery的动画 http://api.jquery.com/animate/和设置回调做相反褪色。

它们的用途例如不透明度为动画,因此也许,这将使您所希望的效果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top