在图像之间淡出

时间:2013-08-08 23:25:21

标签: javascript html css image rotation

我有一些代码设置为在图像之间淡入淡出,但它无法正常工作:

图片:

 <div id="banner_area">
<img class="active" src= "http://f14.co/automaker-search/assets/images/laptop-Dodge.png">
<img src= "http://f14.co/automaker-search/assets/images/laptop-Ford.png">
<img src= "http://f14.co/automaker-search/assets/images/laptop-Honda.png">
<img src= "http://f14.co/automaker-search/assets/images/laptop-Subaru.png">
</div>

javascript:

<script>
function cycleImages(){
  var $active = $('#banner_area .active');
  var $next = ($('#banner_area .active').next().length > 0) ? $('#banner_area .active').next() : $('#banner_area img:first');
  $next.css('z-index',2);//move the next image up the pile
  $active.fadeOut(1500,function(){
//fade out the top image
  $active.css('z-index',1).show().removeClass('active');

//reset the z-index and unhide the image
   $next.css('z-index',3).addClass('active');//make the next image the top one
  });
}

$(window).load(function(){
    $('#banner_area').fadeIn(1500);//fade the background back in once all the     images are loaded
      // run every 7s
      setInterval('cycleImages()', 7000);
})</script>

CSS:

#banner_area img { width:714px; height:414px; position:absolute; top:28px; left:55px;top:0;z-index:1}
#banner_area img.active{z-index:3}

然而,我得到的只是一堆图像,如:http://f14.co/automaker-search/reno/

我猜我离开了?我真的想保持简单。没有悬停,只是自动旋转。

3 个答案:

答案 0 :(得分:2)

我会这样做:

function cycleImages(){
    var images = $('#banner_area img'),
        now    = images.filter(':visible'),
        next   = now.next().length ? now.next() : images.first(),
        speed  = 1500;

    now.fadeOut(speed);
    next.fadeIn(speed);
}

$(function() {
    setInterval(cycleImages, 7000);
});

FIDDLE

答案 1 :(得分:0)

如果您将cycleImages函数替换为上面的函数,它似乎在页面上的代码中出现语法错误。

顺便说一句,我会将间隔写为setInterval( cycleImages, 7000 ),并隐藏当前未显示的任何图像(它们似乎在背景中“戳出”)。

答案 2 :(得分:0)

使用NodeList完成此操作很有趣:

var nodes = document.querySelectorAll('#banner_area img');
var count = nodes.length;

setInterval(function() {
    count -= 1;
    if (count > 0) {
        $(nodes[count]).fadeOut(1500);
    }
    else {
        count = nodes.length;
        $(nodes[count - 1]).fadeIn(1500, function() {
            $(nodes).fadeIn(100); // arbitrary speed to outpace next transition
        });
    }
}, 7000);

:)