#javascript #jquery #jquery-plugins #cycle #jquery-cycle
#javascript #jquery #jquery-плагины #цикл #jquery-цикл
Вопрос:
Я использую плагин jquery cycle с пользовательской анимацией. Это отлично работает!
Однако я бы хотел, чтобы слайды продвигались вправо или влево в зависимости от индекса #, т. Е. если пользователь нажимает на ссылку 1, в то время как слайд № 3 является активным слайдом, анимация переместится вправо, в то время как при нажатии на ссылку 4 слайд переместится влево.
Функциональность, которую я ищу, такая же, как переходы scrollHorz / scrollVert.
Я понимаю, что мне нужна некоторая логика, чтобы связать текущий кадр и следующий кадр: if (frameclicked on имеет более высокий индекс, чем текущий слайд) {анимировать слева} else {анимировать справа}
Я просто не знаю, куда это поместить в коде. Я надеюсь, что это имеет смысл. Любая помощь была бы высоко оценена! Спасибо!
Не то чтобы это, вероятно, помогло, но мой пользовательский код приведен ниже.
$('#s4').before('<div id="nav" class="nav">').cycle({
fx: 'custom',
cssBefore:{
left:1000,
opacity:0,
display:'block'
},
animIn:{
left:0,
opacity:100
},
animOut:{
left:-1000,
opacity:0
},
cssAfter:{
display:'none'
},
speed: 'slow',
easeIn: 'easeInExpo',
easeOut: 'easeInExpo',
next: '.nextnav',
prev: '.previous',
timeout: 0,
containerResize: 1,
fit: 0,
height: 600,
pager: '#slideshow-nav',
pagerAnchorBuilder: function(idx, slide) {
return '#slideshow-nav li:eq(' (idx) ')';
}
});
Ответ №1:
Вам нужно подключиться к onPrevNextEvent
. У них есть что-то под названием isnext
, которое передается и которое в основном сообщает вам, в каком направлении вы движетесь.
Например, я обновил скрипку, которую я создал вчера для цикла.
$(function() {
$('#megaWrapper').cycle({
next : "#next",
prev : "#prev",
timeout : 0,
onPrevNextEvent: function(is,i,el) {
if (is === true) {
alert('slide right');
}
else {
alert('slide left');
}
}
});
});
Комментарии:
1. Большое спасибо за вашу помощь! Я действительно ценю, что вы нашли время взглянуть на это. Это, безусловно, шаг в правильном направлении. Мне все еще нужно понять, как получить доступ к функции анимации из условного оператора — или использовать информацию из условия. Итак, могу ли я заменить оповещение в вашем примере выше функцией для анимации? Или я мог бы передать переменную в aniIn / aniOut? Боюсь, мне все еще неясно, как это будет выглядеть.
2. Кроме того, будет ли onPrevNextEvent работать для автоматически сгенерированных ссылок на пейджер или только для кнопок p / n? Я действительно хотел бы, чтобы была какая-то документация по этому плагину. Я немного удивлен, учитывая, что его так долго не было.
Ответ №2:
Разве то, что вы описываете, не является частью основной функциональности цикла?
Вот как я это делаю:
$('.slideshow').cycle({
fx: 'scrollHorz',
timeout: 0,
next: '#next',
prev: '#prev'
});
Комментарии:
1. хм, я вижу, что она пытается сделать, и у меня тот же вопрос… У меня нет проблем с использованием scrollHorz … я делаю это постоянно.. проекту, над которым я работаю, требуется, чтобы текущий слайд соскальзывал с экрана (вправо или влево), но также с эффектом исчезновения на этом выходном слайде… «onPrevNextEvent» кажется почти идеальным.. анимация, animIn тоже отлично работает.. но я не могу установить правое или левое завершение ни для одного из них .. только в одном направлении …. : (у кого-нибудь есть идеи?