vecchia questione, ma ho pensato di buttarmi in una risposta . Lo uso per l'immagine di intestazione grande su una homepage. Funziona bene manipolando lo z-index per le immagini attuali e successive, mostra l'immagine successiva proprio sotto quella corrente, quindi attenua quella attuale.
CSS:
#jumbo-image-wrapper
{
width: 100%;
height: 650px;
position: relative;
}
.jumbo-image
{
width: 100%;
height: 100%;
position: absolute;
top: 0px;
left: 0px;
}
HTML:
<div id="jumbo-image-wrapper">
<div class="jumbo-image" style="background-image: url('img/your-image.jpg');">
</div>
<div class="jumbo-image" style="background-image: url('img/your-image-2'); display: none;">
</div>
</div>
Javascript (jQuery):
function jumboScroll()
{
var num_images = $("#jumbo-image-wrapper").children(".jumbo-image").length;
var next_index = jumbo_index+1;
if (next_index == num_images)
{
next_index = 0;
}
$("#jumbo-image-wrapper").children(".jumbo-image").eq(jumbo_index).css("z-index", "10");
$("#jumbo-image-wrapper").children(".jumbo-image").eq(next_index).css("z-index", "9");
$("#jumbo-image-wrapper").children(".jumbo-image").eq(next_index).show();
$("#jumbo-image-wrapper").children(".jumbo-image").eq(jumbo_index).fadeOut("slow");
jumbo_index = next_index;
setTimeout(function(){
jumboScroll();
}, 7000);
}
Funzionerà Matt er quante "diapositive" con classe .jumbo-image si trovano nel # jumbo-image-wrapper div.
fonte
2017-07-10 19:11:21
Il problema è che la nuova immagine non è stata caricata già, quindi c'è un battito di ciglia della nuova immagine. (Puoi vederlo solo se hai una cache vuota, ovviamente) –
Ho detto "il caso più semplice". Un altro modo sarebbe precaricare la seconda immagine con javascript o con un altro tag 'img' nascosto. Dissolvenza dell'originale, quindi sfumare nel nuovo. –
Oppure, è possibile utilizzare l'evento 'load' per determinare il caricamento. –