2016-03-29 3 views
0

Я делаю следующую анимацию элемента, использующего jquery animate. Значение расстояния изменяется до начала анимации, поэтому я хочу обновить значение свойства animate. Как я могу это сделать? Я использовал функцию обратного вызова start, как показано, но она не обновляет анимацию.Обновление анимационной собственности до начала анимации

el.delay(delay).animate({ 
    top: -distance 
},{ 
    duration:700, 
    start:function(e){ 
     e.props.top = -($(e.elem).offset().top - $(".navigation").offset().top); 
} 
}) 
+3

Я думаю, вам не хватает единицы '(+ px)' – Rayon

+0

в начале обратного вызова или в параметрах? –

+0

Везде, где вы назначаете 'свойства css' – Rayon

ответ

0

Я смог найти ответ о том, как обновлять анимацию на лету. start - это обратный вызов, когда он запускается при запуске анимации, но изменения, внесенные в объект props, не отражаются в анимации! Для этого обратный вызов step идеален и позволяет нам изменять объект fx на каждом шаге анимации. Следующее - это решение, которое я понял.

el.delay(delay).animate({ 
    top: -distance + 'px' 
},{ 
    duration:700, 
    step:function(now,fx){ 
     if(now == 0){ 
      fx.end = -($(fx.elem).offset().top - $(".navigation").offset().top); 
     } 
    } 
}) 

изменить значение опоры, когда первый шаг срабатывает, и после этого я игнорировать остальные шаги. Спасибо всем, кто помог мне! :)

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