Цикл jQuery минимальное время ожидания

#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;*/