JQuery animate: изменение скорости во время работы - PullRequest
3 голосов
/ 25 февраля 2011

У меня есть скользящий div и несколько кнопок, которые будут запускать анимацию на разных скоростях (используя разные значения длительности).

Кнопки выглядят примерно так: [Левый x2] [левый x1] [левый x0,5] [правый x0,5] [правый x1] [правый x2]

Мой код сейчас выглядит так:

  //leftVal is set based on where the div is currently placed
  //timeLeft is set based on which button is "on hover"  

  $('#content-holder').animate({       
    "left": leftVal        
  }, {queue:false, duration:(timeLeft), easing:"quadEaseOut"});       

Это хорошо в Chrome, но в других браузерах, таких как IE, это приводит к скачкообразной анимации, и вы можете видеть, как прокручиваемый div останавливается на долю секунды, прежде чем продолжить на новой скорости.

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

1 Ответ

1 голос
/ 27 сентября 2011

Я думаю, вы ищете это:

$('#content-holder').stop().animate({       
"left": leftVal
}, {queue:false, duration:(timeLeft), easing:"quadEaseOut"});

.stop() убивает очередь, и после этого вы запускаете анимацию. (http://api.jquery.com/stop/)

Обычно я использую его, чтобы избежать срабатывания моего веб-сайта при спаме нескольких кнопок.

Обратите внимание, что поскольку вы используете замедление, анимация не будет гладкой. Когда вы вызываете новую анимацию, замедление также будет «проигрываться» с самого начала.

Однако, читая описание, если ваша проблема, я думаю, это то, что вы хотите.

Пожалуйста, дайте мне знать, если это помогло!

...