2014-09-29 3 views
0

다음 펜을 고려한 경우 : http://codepen.io/jhealey5/pen/Lqyhu - 왼쪽/오른쪽 버튼을 클릭하면 왼쪽에서 제대로 작동하지만 오른쪽에 약간의 지연이 있음을 볼 수 있습니다.왼쪽 애니메이션에 대한 JQuery 캐 러셀 지연

오른쪽 버튼을 사용하면 좀 더 많은 일이 발생한다는 것을 알고 있습니다. 움직이기 전에 이동해야하지만 문제를 완화 할 수있는 방법이 있습니까? 의도적으로 왼쪽 애니메이션이 지연되는 것을 제외하고는.

기타 개선 사항은 보너스입니다.

jQuery 코드 :

var $left = $('#left'), 
     $right = $('#right'), 
     $images = $('.items img'), 
     isAnimating = 0; 

    $left.on('click', function(){ 
     if (isAnimating) { 
     return false; 
     } else { 
     var $item = $('.items img:eq(0)'); 
     $item.velocity({'margin-left': '-100%'}, 400, 'easeOut', function(){ 
      $(this).appendTo('.items .wrapper').css('margin-left', 0); 
     }); 
     isAnimating = 0; 
     } 
    }); 

    $right.on('click', function(){ 
     if (isAnimating) { 
     return false; 
     } else { 
     isAnimating = 1; 
     var $item = $('.items img:eq(0)'), 
      $lastItem = $('.items img:eq('+($images.length-1)+')'); 

     $lastItem.prependTo('.items .wrapper').css('margin-left', '-100%').velocity({ 
      'margin-left': 0 
     }, 350, 'easeOut'); 
     isAnimating = 0; 
     } 

    }); 

건배.

답변

1

대신 "-100 %"를 사용하여 px로 시도하십시오.

$imgWidth = $images.width(); // Add this variable 


$left.on('click', function(){ 

    if (isAnimating) { 
    return false; 
    } else { 
    var $item = $('.items img:eq(0)'); 
    $item.velocity({'margin-left': -$imgWidth}, 
     400, 'easeOut', function(){ 
     $(this).appendTo('.items .wrapper').css('margin-left', 0); 
    }); 
    isAnimating = 0; 
    } 
}); 

$right.on('click', function(){ 
    if (isAnimating) { 
    return false; 
    } else { 

    var $lastItem = $('.items img:eq('+($images.length-1)+')'); 

    $lastItem.prependTo('.items .wrapper') 
    .css('margin-left', -$imgWidth).velocity({ 
     'margin-left': 0 
    }, 400, 'easeOut'); 
    isAnimating = 0; 
    } 

}); 
+0

와우, 고쳐주었습니다. 그런 생각이 들지 않았을 것 같아서 ... 왜 이걸 고쳤는지 알아? 왜 그 일을하는 백분율 방법이 한면을 늦추고 다른면을 늦출까요? – evu

+0

예 % 메서드는 항상 느리고 항상 동적으로 수행 할 때 픽셀 단위로 설정하는 것이 좋습니다. –

0

속도를 높이려면 속도 기능의 두 번째 변수의 정수를 줄여야합니다. 예를 들어 응답률을 높이려면 350에서 100으로 변경하십시오.

+0

애니메이션이 발생하는 속도가 바뀌기 때문에 다른 설정보다 약간 빠르게 설정해 봤지만 도움이되지는 않을 것입니다. 이 값을 100으로 설정하면 속도가 빨라집니다. – evu