JSFiddle - React, Tailwind, and code Playground
by tweissin
HTML
<!-- Incarnation #2: Without the CSS, this shows that multiple images exist on a page at a time -->
<div id="1" class="thumbnail">
<div class="image">
<img src="http://lorempixel.com/100/100/animals/0" data-n="1" class="loaded"/>
</div>
<h1>title</h1>
<p>description</p>
</div>
<div id="2" class="thumbnail">
<div class="image">
<img src="http://lorempixel.com/100/100/sports/0" data-n="1" class="loaded"/>
</div>
<h1>title</h1>
<p>description</p>
</div>
JavaScript
jQuery(function($){
function ImageFun(category) {
var baseSRC = 'http://lorempixel.com/100/100/' + category + '/';
var maxCount = 6;
var loadTimer = null;
var currentHovered = null;
var currentLoaded = null;
var currentCount = null;
var firstImage = null;
var currentImage = null;
var nextImage = null;
var swapImages = function(){
console.log("swapImages");
var go = function(){
if(currentImage.is(nextImage)){return;}
currentImage.fadeOut(300,
function(){currentImage = nextImage;}
);
nextImage.fadeIn(300);
startTimer();
};
nextImage = currentImage.next('.loaded');
if(!nextImage.length){
if(currentCount == maxCount){
currentCount = 0;
nextImage = firstImage;
return go();
}
var img = $('<img data-n="'+currentLoaded+'">');
img.on('load',function(){
currentLoaded++;
console.log("currentLoaded",currentLoaded);
$(this).addClass('loaded');
})
img.attr('src',baseSRC+(currentLoaded+1));
img.insertAfter(currentImage);
currentCount = 0;
nextImage = firstImage;
return go();
}
currentCount++;
go();
}
var startTimer = function(){
clearTimeout(loadTimer);
loadTimer = setTimeout(swapImages,1000)
}
var next = function(thumb){
currentHovered = thumb;
currentLoaded = thumb.data('loaded') || 0;
currentCount = thumb.data('count') || 0;
firstImage = currentImage = thumb.find('img').first();
...