Ich habe einen Hintergrund, der sich alle 12 Sekunden ändert. In Chrome, Firefox und Opera funktioniert die Hintergrundänderung zwar einwandfrei, aber in Safari lädt der Browser das Bild immer wieder neu und das wird bei jedem Bildwechsel im ersten Zyklus durch ein Flackern bemerkt. Irgendwelche Ideen, wie ich dieses Problem lösen kann.Bilder auf Safari vorladen für Hintergrundbildänderung
Dies ist, wie ich den Hintergrund ändern bin Umgang:
var img2 = new Image();
var img3 = new Image();
img2.src="/img/bg2.png";
img3.src="/img/bg3.png";
Meteor.setInterval(function(){
let elem = $(".header-2");
if(elem.hasClass("bg1")){
elem.removeClass("bg1");
elem.addClass("bg2");
let src = 'url('+img2.src.replace(location.origin,'')+')';
elem.css("background-image", src);
}
else if(elem.hasClass("bg2")){
elem.removeClass("bg2");
elem.addClass("bg3");
let src = 'url('+img3.src.replace(location.origin,'')+')';
elem.css("background-image", src);
}
else{
elem.removeClass("bg3");
elem.addClass("bg1");
}
}, 12*1000)
Die CSS-Klassen:
.header-2.bg1 {
background-image: url('/img/bg1.png');
}
.header-2.bg2 {
}
.header-2.bg3 {
}
Anstatt die 'src' des Bildes zu ändern, wenn der Timer tickt, könnten Sie mehrere Elemente haben, jedes mit seinem Bild geladen, und ändern Sie den' z-index', um das gewünschte Element nach vorne zu bringen? Wenn die Bilder transparent sind, können Sie die ausgeblendeten Elemente unsichtbar machen, indem Sie ihre Deckkraft auf Null setzen. – ConnorsFan