Digital Lightcraft
Digital Lightcraft

Reputation: 465

cross-fade images in jQuery

I have an image on a web page, and have it change when the jQuery slider is moved:

HTML:

<img src="images/flask_image1.png" alt="Isa lab" id="flask" />

Slider HTML:

<div id="slider1">

Script:

<script>
  $(function() {
    $( "#slider1" ).slider({
    min: 0,
    max: 4,
    step: 1,
    change: function(event, ui){
        if(ui.value == 1){
            $('#flask').fadeOut(100);
            $('#flask').attr('src','images/flask_image2.png');
            $('#flask').fadeIn(100);
        }else{
            $('#flask').attr('src','images/flask_image1.png');
        };
    }
    });
  });
</script>

However what this does is the image fades out, changes, then fades in which "works" but it momentarily fades to nothing.

Is there a way to cross-fade the 2 images?

Upvotes: 0

Views: 897

Answers (1)

Amin Jafari
Amin Jafari

Reputation: 7207

here you go, quiet simple I suppose, much less code and difficulty comparing with implementing some plugins: http://jsfiddle.net/gcvqr/2/

HTML

<img src="http://macnetized.com/wp-content/uploads/2014/02/Apple_Logo_csh_by_wiimon.png" id="slider">
<button>Change Image</button>

jQuery

var stopWorking=false;
var firstSrc="http://macnetized.com/wp-content/uploads/2014/02/Apple_Logo_csh_by_wiimon.png";
var secondSrc="http://technicallyeasy.net/wp-content/uploads/2011/04/apple-logo.jpg";
$('button').click(function(){
    if(!stopWorking){
        stopWorking=true;
    $('body').append('<img src="'+$('#slider').attr('src')+'" id="fadingImg">');
    $('#fadingImg').css({
        'position':'absolute',
        'width':'400px',
        'height':'400px',
        'top':'0px',
        'left':'0px'
    });
        if($('#slider').attr('src')==firstSrc){
            $('#slider').attr('src',secondSrc);
        } 
        else{
            $('#slider').attr('src',firstSrc);
        }
    $('#fadingImg').fadeOut(1000,function(){
        $('#fadingImg').remove();
        stopWorking=false;
    });
    }
});

NOTE:

in order to make it work in your page, you need to give #fadingImg the style of your slider img, to be positioned right over it.

Upvotes: 1

Related Questions