Пользовательский слайдер jQuery повторяет одно и то же изображение

0

Вот то, что у меня есть сейчас:

HTML:

<div class="slides">
    <div class="slide1-img">
    </div>
</div>    

JQuery:

            $(function () {
                var i = 1;
                (function doAnimation() {
                    $('.slide' + i + '-img').css({ 'background-position-x': '-50px', opacity: 1 }).animate({ 'background-position-x': '-5px' }, 5000, 'linear').animate({ 'background-position-x': '0px', opacity: 0 }, 500, 'linear', function () {
                        $(this).attr('class', 'slide' + (i = i == 3 ? 1 : i + 1) + '-img').css({ 'background-position-x': '-50px', opacity: 1 }).animate({ 'background-position-x': '-5px' }, 5000, 'linear').animate({ 'background-position-x': '0px', opacity: 0 }, 500, 'linear', doAnimation);
                    });
                })();
            });

CSS:

.slides {
width: 100%;
height: 300px;
overflow: hidden;
}

.slide1-img {
background: url(http://us.123rf.com/400wm/400/400/konradbak/konradbak1103/konradbak110300502/9188750-beautiful-lady-with-long-brown-hair.jpg) 0 0 no-repeat;
width: 100%;
height: 100%;
background-size: cover;
background-size: 110%;
}


.slide2-img {
background: url(http://us.123rf.com/450wm/itrifonov/itrifonov1210/itrifonov121000202/15752531-closeup-portrait-of-a-beautiful-young-woman-with-elegant-long-shiny-hair--concept-hairstyle.jpg) 0 0 no-repeat;
width: 100%;
height: 100%;
background-size: 110%;
}


.slide3-img {
background: url(http://us.123rf.com/450wm/subbotina/subbotina1307/subbotina130700109/20793602-beauty-woman-touching-her-long-and-healthy-brown-hair.jpg) 0 0 no-repeat;
width: 100%;
height: 100%;
background-size: 110%;
}

В настоящее время он повторяет те же изображения дважды перед переходом. Как я могу исправить jQuery, чтобы он показывал только каждое изображение раз за раз?

  • 1
    Не похоже, что вы увеличиваете через i
  • 0
    Хм, есть предложения? Я пробовал i ++ и i + = 1 .. не повезло
Теги:
slider

1 ответ

0

Удалите вторую анимацию, поставив тайм-аут на 0

$(this).attr('class', 'slide' + (i = i == 3 ? 1 : i + 1) + '-img')
.animate({ 'background-position-x': '0px', opacity: 0 }, 0, 'linear', doAnimation);

ДЕМО: http://jsfiddle.net/Wr2qc/

Ещё вопросы

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