Есть ли встроенный метод для синхронизации анимации в jquery? - PullRequest
2 голосов
/ 30 ноября 2011

Я делаю простой аккордеон (вот так)
| Открыт ||
с JQuery и мне нужно развернуть слайд и свернуть другой.
Ширина всех слайдов равна.

Это хорошо сделать с чем-то вроде ..

$(this)
.next().animate({width: 160}, 500, "easeOutQuad")
.siblings("dd").animate({width: 0}, 500, "easeOutQuad");

но у меня дрожит пиксель в последней кнопке слайда во время анимации, потому что изменение размера не синхронизируется.
UPD
(фактически на каждом кадре функция считает текущую ширину с числами с плавающей запятой и округляет ее до целое число
когда мы запускаем две анимации на некоторых кадрах, у нас есть два числа, которые округляют пол
и это приводит к потере одного пикселя)
Я могу использовать функцию "step", чтобы установить width = (width-this.width) для свертывания слайда в каждом кадре
, но я знаю, что есть простое решение Благодаря.

Пример замедления
http://jsfiddle.net/7tSMh/2/
нажмите на зеленый прямоугольник и посмотрите внимательно на синий прямоугольник. сделайте это n раз, если не видите проблемы.

UPD
В Firefox нет проблем
Только хром

1 Ответ

0 голосов
/ 02 января 2012

Рассмотрите возможность реализации пользовательской анимации.Взгляните на раздел «Step Function» в jQuery .animate () документах .Вы можете написать свой селектор так, чтобы он включал сразу все элементы, и использовать пользовательскую функцию, которая определяет, к какому элементу он в данный момент вызывается.

Это должно, по крайней мере, в основном решить вашу проблему с чередующимися анимациями, которые вывидим, вызывая .animate() на двух разных наборах элементов одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...