Бесконечный цикл на анимации

0

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

Мне удалось найти это после поиска stackoverflow.

jQuery(".slide-inner").animate({left: -9913}, 80000, 'linear');

9913 - текущая ширина моего div в px. прямо сейчас он просто заканчивает ширину 9913, а затем завершает анимацию, ей нужно начинать заново, не показывая пробел, например, когда он попадает в последний пиксель в 9913 году, он должен начинаться с 1px снова и снова.

Мой html:

<div class="slide-inner">
<div class="one ani"></div>
<div class="two ani"></div>
<div class="three ani"></div>   
<div class="four ani"></div>
<div class="five ani"></div>
<div class="six ani"></div>
</div>

Игнорируйте элементы внутри.slide-inner. Это просто абсолютные позиции divs, которые я использую с css3, чтобы осветить слайдер в ключевых точках.

РЕДАКТИРОВАТЬ:

var animate = function() {
  $(".slide-inner").animate({left: -9913}, 80000, 'linear', function() {
  $(this).css('left', 1);
  animate();
 });
}
animate();

Проблема с приведенным выше кодом остается слева, 1) должен быть отзывчивым, поэтому я не могу положить туда -1920, а затем в браузере изменить размер не будет работать так, как должно быть?

  • 2
    Может быть, предоставление JSFiddle поможет
Теги:

2 ответа

2

Похоже, что вам нужен обратный вызов для animate() сочетании с функцией, которая выполняет анимацию, то есть рекурсивную функцию.

var animate = function() {
  $(".slide-inner").animate({left: -9913}, 80000, 'linear', function() {
    $(this).css('left', 1);
    animate();
  });
}
animate();

Я собрал действительно основную скрипку, чтобы продемонстрировать эту технику: http://jsfiddle.net/6mfCx/

  • 0
    Разве мы не получаем переполнения стека в JavaScript? Я никогда не изучал это прежде, если честно.
  • 0
    @musefan Я не уверен, что ты имеешь в виду?
Показать ещё 8 комментариев
0

Один из способов добиться этого - использовать background-image & background-repeat:repeat-x; для вашего div. Затем вы можете анимировать свойство background-position div и получить желаемый эффект.

Предположим, что ваша ширина div равна 1920px, затем анимация из background-position:0px 0px в background-position:-1920px 0px; ,

function animate() {
  $(".slide-inner").animate({'background-position':'0px -1920px'}, 80000, 'linear', function() {
    $(this).css('background-position','0px 0px');
    animate();
  });
}
animate();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню