Как непрерывно прокручивать содержание в DIV с помощью jQuery?

Нацелиться

Цель к контейнерного DIV с фиксированной высотой и шириной, и имейте содержимое HTML в том, который DIV автоматически прокручивает вертикально непрерывно.

Вопрос В основном, который я создал код ниже использования jQuery для прокрутки (перемещает) дочерний DIV вертикально вверх пока его внешняя сторона, ограничение порождает поле, где анимация затем завершается, какие триггеры обработчик событий, который сбрасывает положение дочернего DIV и запускает процесс снова.

Это хорошо работает, таким образом, содержание прокручивает отъезд пробела и затем начинает с нижней части снова и прокручивает.

Проблема, которую я имею, который является требованиями для этого, состоит в том, чтобы содержание появилось, как будто это непрерывно повторялось, посмотрите ниже схемы для лучше объяснения этого, есть ли способ сделать это? (Я не хочу использовать сторонний разъем ins или библиотеки кроме jQuery):

alt text
(источник: cameroncooke.com)

Что я имею до сих пор

HTML:

This is a title

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse at orci mi, id gravida tellus. Integer malesuada ante sit amet enim pulvinar congue. Donec pulvinar dolor et arcu posuere feugiat id et felis.

More content....

CSS:

#scrollingContainer{
  height: 300px;
  width: 300px;
  overflow: hidden;
}

#scrollingContainer DIV.scroller{
  position: relative;
}

JavaScript:

/**
* Scrolls the content DIV
*/
function scroll() {

  if($('DIV.scroller').height() >  $('#scrollingContainer').height()) {

    var t = $('DIV.scroller').position().top + $('DIV.scroller').height();

    /* Animate */
    $('DIV.scroller').animate(
    {
      top: '-=' + t + 'px'
    }
    , 4000, 'linear', animationComplete);
  }
}

function animationComplete() {
  $(this).css('top', $('#scrollingContainer').height());
  scroll();
}

6
задан Glorfindel 22 July 2019 в 09:11
поделиться

3 ответа

Вам нужно будет продублировать элементы содержимого и выровнять их так, чтобы они располагались вертикально рядом друг с другом, и прокручивать их вместе. Ваша текущая прокрутка должна работать, прыжок будет невидимым, потому что он должен переходить от верхней части нижнего элемента к верхней части верхнего элемента, то есть к той же части. Я бы поместил обе копии содержимого (вы можете просто .clone его, чтобы получить другую копию) в контейнер и прокрутите его, чтобы вам не пришлось беспокоиться о перемещении двух элементов.

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

3
ответ дан 17 December 2019 в 07:02
поделиться

Вы хотите, чтобы содержимое "автоповторялось" и прокручивалось вечно? Вы должны иметь возможность добавить новый DIV под текстом и скопировать этот текст в новый DIV. Делайте это на основе позиции прокрутки, удаляя DIV выше, когда он исчезает из виду. По сути, вы просто копируете текст, помещаете новый DIV в нижнюю часть "стопки" и удаляете его сверху, когда он исчезает из вида.

1
ответ дан 17 December 2019 в 07:02
поделиться

Проще говоря, вам понадобятся два div, которые будут больше, чем поле прокрутки, и вам нужно будет переместить тот, который не виден, под тот, который виден. Если они одинаковые, это не должно быть заметно.

0
ответ дан 17 December 2019 в 07:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: