2012-07-26 3 views
1

Je travaille sur certaines fonctionnalités pour un e-commerce où un utilisateur clique sur une couleur de produit, et l'image précédente des produits disparaît alors que le nouveau produit s'estompe, je suis en essayant d'obtenir un effet de fondu enchaîné, mais j'ai un effet de flicker là-dedans que je ne veux pas, je pense que ça vient quand je retire la vieille image du dom, voici un violon pour vous montrer ce que j'essaye de faire.Modifier l'opacité de 2 éléments pour donner un effet de fondu enchaîné

http://jsfiddle.net/L9Z5G/

+0

Voir ma réponse ci-dessous. –

Répondre

1

J'espère que c'est ce que vous recherchez: Demo

$('.colours').click(function() { 
    if ($('#' + $(this).html().toLowerCase()).attr('class') == 'active') { return; } 

    var active = $('.active'); 
    var next = $('#' + $(this).html().toLowerCase()); 

    active.fadeOut(500, function() { 
    $(this).toggleClass('active'); 
    }); 
    next.fadeIn(500, function() { 
    $(this).toggleClass('active'); 
    }); 
});​ 
1

est-il pas plus facile à utiliser .hide() et .Show(), et juste les laisser se Crossfade?

1

Pour lier un événement click, vous utilisez click() heres comment.

$('#color1').click(function(){ 
     $('#image1').fadeOut('fast'); 
}); 
+0

+1 à vous aussi! –

1

Essayez cette s'il vous plaît: travail démohttp://jsfiddle.net/djMZe/1/ouhttp://jsfiddle.net/R7u8G/1/

espère que cela répond aux besoins! :)

Code

$("#colours li").click(function() { 
    $(".large-image:first-child:not(.new)").animate({ 
     opacity: 0 
    }, 500); 
    var img = $("<img />").attr('src', $(this).data("alternative")).attr("class", "large-image new"); 
    img.css({ 
     opacity: 0 
    }) 
    $(".zoom-image").append(img); 
    //img.animate({ opacity : 1}, 500); 
    img.css({ 
     "opacity": "1" 
    }).fadeIn("slow"); 
    $(".large-image:not(:last-child)").remove(); 

});​ 
+0

merci mais votre solution permute juste l'image que je voulais que le swap ait un bel effet de fondu. – Udders

+0

@ sico87: Voir ma réponse j'espère que ce sera une solution. –

+0

@ sico87 comme ceci: http://jsfiddle.net/R7u8G/1/ ':)'? –

1

Voir Cette DEMO, espérons que vous avez tenu cet effet.

ÉDITÉ:UPDATED FIDDLE

jQuery Cycle Plugin

$('#slideshow').before('<ul id="nav">').cycle({ 
    fx: 'fade', 
    speed: 'fast', 
    timeout: 0, 
    pager: '#nav', 

    // callback fn that creates a thumbnail to use as pager anchor 
    pagerAnchorBuilder: function(idx, slide) { 
     return '<li><a href="#"><img src="' + slide.src + '" width="50" height="50" /></a></li>'; 
    } 
});​ 

SEE REFERENCE

+0

Merci, mais l'utilisateur ne clique pas sur les vignettes, ils cliquent sur des échantillons de couleurs alors comment le lier dans mon système existant? – Udders

+0

Et à propos de ça: http://jsfiddle.net/akhurshid/ZKgnR/10/ –

Questions connexes