#jquery #timeout #cycle
#jquery #время ожидания #цикл
Вопрос:
У меня небольшая проблема с плагином цикла jQuery и его временем ожидания.
Я использую scrollLeft
эффект и хотел бы, чтобы он всегда продолжал прокручиваться (аналогично новостной ленте, если вы понимаете, что я имею в виду). Теперь использование timeout: 0
не будет работать, потому что это вообще отключит автоматическое списывание.
Поэтому я подумал об использовании timeout: 10
(чтобы иметь почти незаметный тайм-аут), но это тоже не работает, потому что независимо от того, насколько низко я установил тайм-аут, тайм-аут всегда кажется около секунды (даже при использовании timeout: 1
).
Опять же, чтобы сделать это немного более понятным:
Увеличение времени ожидания до timeout: 10000
имеет желаемый эффект и приостанавливает скольжение на 10 секунд, но уменьшение его до timeout: 1
выглядит так же, как если бы я использовал timeout: 1000
Я не уверен, в чем проблема, потому что я искал в Google минимальный тайм-аут, но не смог найти ничего, что указывало бы, что минимальный тайм-аут равен 1000
Сценарий, который я использую, очень прост, поэтому я думаю, что там не должно быть ошибок, но просто для того, чтобы вы тоже могли это проверить, я публикую его:
$('#demo').cycle({
slideExpr: 'p',
fx: 'scrollLeft',
next: '.next',
speedIn: 5000,
speedOut: 5000,
fastOnEvent: 1000,
containerResize: 0,
pause: 1,
timeout: 10
});
Надеюсь, я смог достаточно хорошо объяснить свой вопрос 🙂
С уважением!
p.s. Я не хочу использовать какой-то плагин newsticker, но мне бы очень хотелось создать этот эффект с помощью cycle.
Ответ №1:
Если вам нужна действительно непрерывная прокрутка, вы можете использовать опции easeIn
и easyOut
. Попробуйте это:
$('#demo').cycle({
fx: 'scrollHorz',
continuous: 1,
easeIn: 'linear',
easeOut: 'linear'
});
Ответ №2:
Существует опция для цикла jQuery под названием continuous, которая максимально приближена плагином к традиционной новостной ленте. Попробуйте следующее:
$('#demo').cycle({
fx: 'scrollLeft',
continuous: 1
});
Я надеюсь, что это поможет!
Комментарии:
1. Вау! Я просматривал варианты почти час, проводил исследования в Google в течение часа, и я просто упустил это из виду! Теперь чувствую себя идиотом: S Большое спасибо!
Ответ №3:
Редактировать: игнорируйте этот ответ, поскольку он требует изменения кода. Используйте continuous
опцию, как указано выше.
В функции buildOptions() найдите следующий код
var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
while((opts.timeout - opts.speed) < buffer) // sanitize timeout
opts.timeout = opts.speed;*/
и прокомментируйте цикл while
var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
/*while((opts.timeout - opts.speed) < buffer) // sanitize timeout
opts.timeout = opts.speed;*/