Infinite looping slider

by Sandra Caroline Hansen

HTML

<div id="container">
    <ul id="slider">
        <div class="slide">slide 1</div>
        <div class="slide">slide 2</div>
        <div class="slide">slide 3</div>
        <div class="slide">slide 4</div>
        <div class="slide">slide 5</div>
        <div class="slide">slide 6</div>
    </ul>
</div>

CSS

#container {
    position: relative;
    width: 200px;
    height:100px;
    background: orange;
}
#slider {
    position: absolute;
}

JavaScript

$(function () {
    var startTime = +new Date();
    $('#container').css('overflow', 'hidden');
    
    var slider = $('#slider'),
        items = slider.find('.slide');
    var sliderHeight = slider.height(),
        itemsNum = items.length,
        itemHeight = items.height();

    slider.css('top', '-' + (sliderHeight + itemHeight) + 'px');

    var startPos = slider.css('top');

    items.first().before(items.clone());
    items.last().after(items.clone());

    scrollItems(slider,sliderHeight,itemHeight,startPos,4);
    var endTime = +new Date();
    var diff = endTime - startTime;
    console.log(diff);
    setInterval(function(){ 
        scrollItems(slider,sliderHeight,itemHeight,startPos,4);
    }, 4000);
});

function scrollItems(container, targetsHeight, increment, startPos, temps) {
    var secs = temps * 1000;
    container.animate({
        'top': '-' + ((targetsHeight * 2) + increment) + 'px'
    }, secs, 'linear', function () {
        container.css('top', startPos);
    });
}