2013-12-09 3 views
0

6 개 위치 (열) 중 하나에서 생성되는 div가 있고이 새로 생성 된 div (.letter-block)가 필요합니다. 그것은 매 초마다 새로운 블록을 생성해야하며이 블록은 컨테이너 열 div의 맨 아래로 떨어지거나 (또는 ​​해당 열의 마지막 블록 상단에서 멈춰서 블록이 각 블록 위에 쌓이는 효과를 가져와야합니다. 다른, 테트리스와 유사). 생성 할 블록을 가져올 수는 있지만 일단 생성되면 컨테이너 div의 맨 아래로 "떨어지지"않습니다.동적으로 생성 된 jQuery animate div

$(document).ready(function(){ 
    setInterval(newLetter, 1000) 
    function newLetter(){ 
    var $randCol = $("#col" + (Math.floor(Math.random()*6) + 1)); 
    $randCol.prepend("<div class='letter-block'></div>").animate({'bottom':'0'}, 500); 
    }; 
}); 
+0

메이크업의 jsfiddle 너무 쉽게 나는 그것이 이러한 요소는 '어떤 인식하지 않도록 문서가 준비되면 존재하지 않았기 때문이다 것을 알고, 만들기 블록을 애니메이션하지 않습니다 아직 –

답변

0

귀하의 코드 :

var $randCol = $("#col" + (Math.floor(Math.random()*6) + 1)); 
$randCol.prepend("<div class='letter-block'></div>").animate({'bottom':'0'}, 500); 

여기에서 선택한 당신의 6 개 열 중 하나입니다 요소입니다. 새 <div>을 추가하지만 열은 여전히 ​​선택되어 있으므로 <div> 대신 열을 애니메이션으로 적용하려고합니다. 그런 다음 위에 앉아있는 블록 수를 계산해야합니다. 열의 블록 수를 계산 한 다음 높이 (즉, 새 하단 위치)를 곱합니다. 이 코드를보십시오 :

$(document).ready(function(){ 
    setInterval(newLetter, 1000); 
    function newLetter(){ 
     var $randCol = $("#col" + (Math.floor(Math.random()*6) + 1)); 
     var $newDiv = $("<div class='letter-block'></div>"); 
     $randCol.prepend($newDiv); 
     $(document).ready(function(){ 
      var $oldBlocks = $randCol.find('.letter-block'); 
      var yPos = '' + ($oldBlocks.length * $oldBlocks.first().outerHeight()); 
      $newDiv.animate({ 
       'bottom': yPos 
      }, 500); 
     }); 
    }; 
}); 

는 새로운 사업부는 (귀하의 경우 아마도 절대) position: absolute 또는 position: relative 있는지 확인하십시오 또는 bottom 같은 방향성은 작동하지 않습니다. CSS :

.letter-block { 
    position: absolute; 
    // other CSS 
} 
+0

이를 이해하기 .retry-block '요소를 얻을 수 있지만, 나는 그들을 얻는 유일한 방법은 $ (document) .on을 통해서만 가능하지만 그때에는 필요없는 이벤트가 필요하다. 나는 창조계에서 즉시 일어날 애니메이션이 필요하다. –

+0

나는 대답을 편집했다. '.letter-block '에 대한 귀하의 CSS는 무엇입니까? – RustyToms

+0

'.letter-block { z- 색인 : 1; 신장 : 39px; 너비 : 39px; background-color : # 3399FF; border-radius : 8px; 직위 : 절대; }' 절대적으로 변경하면 애니메이션이 작동 할 수 있지만 상대방과 겹치지 않습니다. 전에는 겹치지 않을 것입니다. (가장 최근에 생성 된 것 중 하나를 만들어서 마지막 하나를 아래로 밀어 넣을 것입니다.) 이제는 서로 움직이면서 더 이상 겹쳐지지 않습니다. –

관련 문제