循环旋转木马水平javascript / jquery

时间:2014-08-01 15:02:57

标签: javascript jquery

我想知道是否有人可以帮我为这个旋转木马写一个循环?此刻旋转木马每3秒向右滚动一次,然后向后滚动到左侧并自行重置,我只是想连续无限循环以使它看起来更干净,有人能指出我正确的方向还是帮助我?我知道它更简单,但我不是一个js开发人员! (这是谷歌网站的HTML框,否则我会使用jquery插件)

<style>
 .carousel {
  width: 1080px;
  height: 220px;
  position: relative;
  overflow: hidden;
  background-color:white;
  margin-bottom: 20px;
  margin-top: 20px;
  margin-left: 70px;
 }
 .items {
  width: 1080px;
  position: absolute;
 }
 .items > div {
  font-size: 20px;
  display: table-cell;
  vertical-align: middle;
  text-align: center;
 }
 .items > div > img {
  padding: 10px;
 }
 .nav {
  position: absolute;
  bottom: 5px;
  right: 15px;
 }
 .button {
  cursor: pointer;
  font-weight: bold;
  color: #fff;
 }
</style>
<div class="carousel" style="display:none;">
 <div class="items">
  <div>
    <img src="http://i59.tinypic.com/etisye.png" border="0" alt="Alkamai Logo">
  </div>

  <div>
   <img src="http://i59.tinypic.com/ouukxu.png" border="0" alt="AWS Logo">
  </div>
  <div>
    <img src="http://i61.tinypic.com/16k3t43.png" border="0" alt="cover-it-live">
  </div>
  <div>
    <img src="http://i60.tinypic.com/23wljxh.png" border="0" alt="escenic">
  </div>

  <div>
    <img src="http://i58.tinypic.com/sbiqu1.png" border="0" alt="Livefire">
  </div>
  <div>
    <img src="http://i58.tinypic.com/do9wep.jpg" border="0" alt="ooyala">
  </div>
  <div>
    <img src="http://i61.tinypic.com/24werue.png" border="0" alt="varnish">
  </div>
  <div>
    <img src="http://i60.tinypic.com/2ij14rd.png" border="0" alt="wordpress">
  </div>
 </div>
</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"> </script>
<script>
 var current_slide = 0; // zero-based
 var slide_count = 4;
 var slide_size = 1080;

 var Direction = {
  LEFT: -1,
  RIGHT: 1
 };

 /**
 * Moves to the next slide using the direction (dx) parameter.
 */
 var nextSlide = function(dx) {
  current_slide = (current_slide + slide_count + dx) % slide_count;

  // Calculate the new value for css 'left' property and animate.
  var left_offset = '-' + (current_slide * slide_size) + 'px';
  $('.items').animate({'left': left_offset}, 1080);
 };

 $('.carousel').show();

 setInterval(function(){
    nextSlide(Direction.RIGHT);
  }, 3000);
</script>

1 个答案:

答案 0 :(得分:1)

对当前脚本稍作修改可以使其继续前进。

变化是:

  1. current_slide始终为1(以便始终只向前移动)
  2. 当我们向左移动.items X像素时,我们将相应数量的项目移动到最后(宽度中适合X像素的数字)
  3. 更新演示:http://jsfiddle.net/techfoobar/dWy9R/4/

    代码:

    var parent = $('.items');
    
    var nextSlide = function (dx) {
    
        // NOTE: always move forward only
        current_slide = 1; //(current_slide + slide_count + dx) % slide_count;
    
        // Calculate the new value for css 'left' property and animate.
        var ileft_offset = current_slide * slide_size,
            left_offset = '-' + ileft_offset + 'px',
            iWidth = 0;
    
        parent.animate({
            'left': left_offset
        }, 'slow', function() { // called when animation is done
            iWidth = parent.find('> div:first').width();
            while(ileft_offset > iWidth) {
                parent.find('> div:first').appendTo(parent);
                ileft_offset -= iWidth;
                parent.css('left', '-' + ileft_offset + 'px');
            }
        });
    };
    

    不会暂停的修改版本。继续。

    演示:http://jsfiddle.net/techfoobar/dWy9R/5/

    var nextSlide = function () {
        parent.animate({
            'left': '-' + slide_size + 'px'
        }, 4000, 'linear', function() { // called when animation is done
            var ileft_offset = slide_size,
                iWidth = parent.find('> div:first').width();
            while(ileft_offset > iWidth) {
                parent.find('> div:first').appendTo(parent);
                ileft_offset -= iWidth;
                parent.css('left', '-' + ileft_offset + 'px');
                iWidth = parent.find('> div:first').width();
            }
            nextSlide();
        });
    };
    
    nextSlide(); // start it off!