2012-04-02 3 views
0

Я новичок в JS. Прямо сейчас я работаю над эффектом, в котором я хочу, когда сначала прокручивается страница, а затем начинается анимация естественного движения, но она создает проблему, потому что, когда я прокручиваю анимацию элементов, вы становитесь быстрыми.Гладкое естественное движение при прокрутке страницы

Проверьте, что у вас есть идея.

http://jsfiddle.net/byvLy/

+0

какие движения вы строите? – Joseph

+0

Я не уверен, что вы пытаетесь сделать? Как насчет этого: http://jsfiddle.net/byvLy/2/ – codef0rmer

+0

@Joseph Мне нравится этот тип движения на странице прокрутки http://jsfiddle.net/byvLy/5/ – sandeep

ответ

2

я знаю, что это качается ящик (понял это из-за Math.sin())

однако, вы должны отметить, что прокрутка событие вызывается каждые несколько миллисекунд во время прокрутки. в вашем коде вы вызываете анимацию и создаете интервал каждый раз при запуске события прокрутки. вот почему ваша анимация нервничает;

try this instead:

$(function() { 

    $(window).on('scroll', function() { 
     swing.start('.cloud1, .cloud2'); 
    }); 

    var swing = (function() { 
     var animated = false; 

     function startAnimation(selector) { 
      if (!animated) { 
       var banner = $(selector); 
       var start = 0; 

       animated = true; 
       window.setInterval(function() { 
        banner.css('left', 100 * Math.sin(start) + 80); 
        start += 0.1; 
       }, 30); 
      } 
     } 
     return { 
      start: startAnimation 
     } 
    }()); 
});​ 
+0

+1 но анимация быстрая – sandeep

+0

Я изменил интервал, а начальная переменная увеличилась, чтобы сделать swing более заметным. просто измените их. – Joseph

+0

спасибо, что это замечательно :) – sandeep

Смежные вопросы