jQuery淡化两个没有白色的图像

时间:2013-02-20 08:14:24

标签: jquery image fade

我想在没有白色转移的情况下淡化图像。

HTML:

<div class="image">
  <span><img src="1.jpg"></span>
</div>

jQuery的:

$('.image > span > img').fadeOut(1000, function() {
  $('.image > span > img').attr('src', images[i]);
  $(this).fadeIn(1000);
});

这有效,但改变之间有白色淡化。图像数组包含图像源。 我找到了这个http://jsfiddle.net/byB6L/,但我无法更新我的代码以便使用它。

4 个答案:

答案 0 :(得分:4)

这应该会给你一个想法:

var c = 0,                  // Counter index
    $img = $('.image img'), // Get images
    n = $img.length;        // How many images?

$img.eq(c).show();          // Show c one

(function loop() {          // Recursive infinite loop
    $img.delay(1000).fadeOut(800).eq(++c%n).fadeIn(800, loop);
}()); 
.image{
  position:relative;
}
.image img{
  position:absolute;
  top:0px; 
  display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="image">
  <img src="http://placehold.it/300x150/bf0?text=Apples" alt="" />
  <img src="http://placehold.it/300x150/0bf?text=and" alt="" />
  <img src="http://placehold.it/300x150/fb0?text=Pears" alt="" />
</div>

答案 1 :(得分:2)

这是因为您在动画端回调中使用相同的图像。

我的建议:在position: relative;容器上使用class="image",将图片元素设置为position:absolute;,现在在淡出图像后将新图像插入容器并淡化它进入并删除第一张图片。

示例:

HTML:

<div class="image">
  <span><img src="1.jpg"></span>
</div>

的CSS:

<style type="text/css">
    .image{position:relative;}
    .image span img{position:absolute;top:0;left:0;}
</style>

JavaScript的:

<script type="text/javascript">
    $('.image > span > img').fadeOut(1000);
    var $image = $('<img alt="" src="YOUR NEW IMAGE_PATH" style="opacity:0;" />');
    $('.image > span').append($image);
    $image.fadeIn(1000, function(){
        $('.image > span > img').first().remove();
    });
</script>

答案 2 :(得分:0)

不是淡出一个图像然后在另一个图像中淡入淡出,而是使用两个图像元素并将它们叠加在一起,然后淡出顶部图像以使底部图像出现。

CSS:

.image img { position: absolute; left: 0; top: 0; }

HTML:

<div class="image">
  <img class="bottomImage" src="http://placekitten.com/100/100"/>
  <img class="topImage" src="http://placekitten.com/g/100/100"/>
</div>

使用Javascript:

$('.topImage').fadeOut(3000);

演示:http://jsfiddle.net/Guffa/grTUK/

答案 3 :(得分:0)

JQuery不支持背景颜色动画等背景图像动画(也需要使用额外的插件)。所以要做你的动画,你肯定需要有两个图像。