JSFiddle - React, Tailwind, and code Playground

HTML

<div id="image-container" class="image-container">
<img id="image" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Cairo_International_Stadium.jpg/220px-Cairo_International_Stadium.jpg" />
</div>

CSS

.kiyuras-image {
    position: absolute;
    top: 8px;
    left: 8px;
    max-width: 220px;
}

.image-container{
    max-width: 220px;  
}

.hidden{
    display:none;
}

.large-image-container{
    position:absolute;
    top: 0px;
    max-width: 400px;
}
.large-image-size{
    max-width: 400px !important;
}
.loading{
    background-color : white;
    opacity : 0.5;
    background-image : url('http://bouffee-oxygene.touriloire.fr/comresweb/images/loading.gif');
    background-repeat:no-repeat;
    background-position:center; 
    background-size:80px 60px;
}

JavaScript

$(function () {

    var fullimageurl = 'http://upload.wikimedia.org/wikipedia/commons/3/32/Cairo_International_Stadium.jpg';

    $imageContainer = $("#image-container");    
    $image = $('#image');
    
    $imageContainer.on({
        mouseenter: function (event) {    
           //Add a loading class
           $imageContainer.addClass('loading');
           $image.css('opacity',0.5); 
           
           //Insert div (for styling) containing large image            
           $(this).append('<div><img class="hidden large-image-container" id="'+this.id+'-large" src="'+fullimageurl+'" /></div>');
           
           //Append large image load callback            
           $('#'+this.id+'-large').load(function() {
               $imageContainer.removeClass('loading');
               $image.css('opacity',1);
               $(this).slideDown('slow');
               //alert ("The image has loaded!");        
           });
        },            
        mouseleave: function (event) {
           //Remove loading class
           $imageContainer.removeClass('loading');
           //Remove div with large image 
           $('#'+this.id+'-large').remove();
           $image.css('opacity',1);             
        }        
    });
    

});