1

我正在制作一种矩阵风格的背景,图像会随机下拉。我想将除法传递给一个函数作为启动动画的参数。我无法弄清楚如何做到这一点。我不认为为每个下拉的图形编写相同的函数是一种好的做法。这就是我所拥有的——

    <div id="l_0" class="drop_leds">
    </div>
    <div id="l_1" class="drop_leds">
    </div>
    <div id="l_2" class="drop_leds">
    </div>
    <div id="l_3" class="drop_leds">
    </div>

$(document).ready(function(){

     function row_01(id){
        var movePixAmount = 10;
            setInterval(function(){
               $(id).animate({ marginTop: movePixAmount+"px" }, 10);
               movePixAmount = movePixAmount +10;
                if(movePixAmount === 600){
                    movePixAmount = 0;
                    };
                },
            100);//inter

             };
        row_01("#l_0")

感谢您的任何帮助

4

2 回答 2

3

这是一场相当长的战斗,但我赢了(:如果你用一个函数来做这件事,就会发生冲突,或者它们都将具有相同的速度。

但相反,您可以以不同的速度编写 4 个不同的元素setInterval functions并应用这些functions多个元素,例如 100 个元素。只需定义不同的left值以不交叉。这是工作的jsFiddle。

jQuery:

var eleHeight = $('.drop_leds').height();
var windowH = $(window).height();
var count1 = 0;
var count2 = 0;
var counter;
var windowLimit = windowH + eleHeight;

counter = window.setInterval(function() {
    if( count1 >= 0 && count1 < windowLimit ) {
        count1 += 1;
        $('#l_0,#l_6').css({'top':count1 +'px'});
    }
    else if( count1 >= windowLimit ) { 
        count1=0; $('#l_0,#l_6').css({'top':'-'+ eleHeight +'px'});
    }
},1);

counter = window.setInterval(function() {
    if( count2 >= 0 && count2 < windowLimit ) {
        count2 += 4;
        $('#l_1,#l_4').css({'top':count2 +'px'});
    }
    else if( count2 >= windowLimit ) { 
        count2=0; $('#l_1,#l_4').css({'top':'-'+ eleHeight +'px'});
    }
},1);

CSS:

.drop_leds {position:absolute; width:10px;height:60px;background:black;top:0px; }
#l_0 { left:40px; }
#l_1 { left:70px; }
#l_2 { left:110px; }
#l_3 { left:140px; }
#l_4 { left:180px; }
#l_5 { left:210px; }
#l_6 { left:220px; }
#l_7 { left:240px; }
于 2013-01-29T13:39:21.827 回答
0

我知道这是旧的,但如果另一个人最终看到这里,我制作了一个插件,您可以将其添加到您的网站以使动画矩阵背景工作。https://github.com/manacu/manacuMatrixBg

希望有帮助!

于 2016-01-19T22:44:35.843 回答