Я нашел решение, которое работает, хотя, возможно, это не оптимальное решение.
Похоже, что предоставленный вами код был практически всем, что вам нужно.Как это работает у меня для первого слайда, но не для последующих слайдов.Причина в том, что функция onAfter выбирает все div ".right" для анимации.Следовательно, при первом запуске все div ".right" находятся в их окончательном состоянии, поэтому повторный запуск не имеет никакого эффекта (вы говорите каждому анимировать от 18 до 18 пикселей).В этом случае ключ заключается в том, чтобы восстановить исходный размер текста, чтобы его можно было сжать, но только для следующего слайда.
Чтобы сделать это, вы можете использовать обратные вызовы плагина «до» и «после»каждый из них отправляет несколько параметров, которые включают в себя «currSlideElement» и «nextSlideElement» в качестве первых двух параметров (вы можете увидеть, как я включил их в код ниже).Сначала короткое замечание: хотя обратный вызов «after» вместо этого получает предыдущий элемент и текущий элемент, а не текущий и следующий, как указано в документации плагина.Я не уверен, является ли это ошибкой в плагине или опечаткой в документации, или, возможно, (более вероятно), я просто что-то неправильно понимаю.В любом случае, мы можем заставить его работать ...
Так что единственные изменения заключаются в следующем: я добавил обратный вызов перед слайд-шоу:
$('#slide').cycle({
fx: 'fade',
timeout: 5000,
before: onBefore,
after: onAfter
});
И вот обратные вызовы:
function onBefore(currentElement, nextElement) {
$(nextElement).find('.right').css({fontSize: '40px'}); // reset css for upcoming text
}
function onAfter(previousElement, currentElement) {
// Note: Plugin documentation says parameters should be (currentElement, nextElement), but that doesn't seem to be the case!
$(currentElement).find('.right').animate({fontSize: '18px'}, 2000); // animate current text
};
Надеюсь, что это поможет (и извините, если я переоценил ... надеюсь, это поможет другим читателям, если что-нибудь).
Приветствия.