@valitskiydmitriy

Слайдер на js (Без Jquery) для анимации использую (setInterval)?

Есть такая структура html документа:
<div class="slider">
    <div id="slideimg" style="margin-left: 0px">
        <div class="slide"><img src="img/slide-1.jpg"></div>
... 10 Аналогичных DIV 
    </div>
    <div class="nav">
        <div class="nav" id="next"><img src="img/next.png"></div>
        <div class="nav fclick"><img src="img/4dclick.png"></div>
        <div class="nav" id="prew"><img src="img/prew.png"></div>
    </div>
</div>

В слайдере отображается сразу 5 картинок (Div елементов)
CSS вот такой:
.slider {
    width: 1075px;
    height: 350px;
    background: #e7e7e7;
    position: relative;
    overflow: hidden;
    margin: 0 auto;
    padding: 16px 0px 0px 16px;
    box-shadow: 0 0 10px rgba(0,0,0,0.5);

}
#slideimg {
    position: relative;
    left: 0px;
    top: 0;
    width: 10000px;
    margin-left: 0px

}
.slide {
    width: 200px;
    float: left;
    margin-right: 16px;
}


Как реализовал на данный момент, по средством js прибавляю к значению margin-left нужное мне количество пикселей и слайдер работает, НО, прибавляет всегда разное значение, подскажите почему? Вот JS скрипт:
next.onclick = function() {
        var start = Date.now();
        var timer = setInterval(function() {
            var timePassed = Date.now() - start;

            slideimg.style.marginLeft =  parseInt(document.getElementById('slideimg').style.marginLeft) + timePassed / -45 + 'px';

            if (timePassed > 1100) clearInterval(timer);

        }, 65);
    }
   prew.onclick = function() {
        var start = Date.now();
        var timer = setInterval(function() {
            var timePassed = Date.now() - start;

            slideimg.style.marginLeft =  parseInt(document.getElementById('slideimg').style.marginLeft) + timePassed / +45 + 'px';

            if (timePassed > 1100) clearInterval(timer);

        }, 65);
    }


И пара вопросов, как сделать что бы при значении margin 0, нельзя было листать в обратную сторону, а при 1000 обнулить значение?
  • Вопрос задан
  • 4489 просмотров
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
SetInterval не нужен. Добавьте на основной слой со слайдами CSS анимацию, а слайдеру добавляйте только одну координату без всякого там интервала. Сгенерировать анимацию можно тут: matthewlein.com/ceaser

Координаты можно прокручивать в другой конец простой проверкой:
var max = 1000;

if (x < 0) {
    x = max;
} else if (x > max) {
    x = 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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