私は12秒ごとに背景が変化します。 Chrome、Firefox、Operaでは、背景の変更はうまくいきますが、Safariではブラウザが常にイメージを再度読み込み、最初のサイクルでイメージが変わるたびにちらつきが表示されます。どのように私はこの問題を解決することができます上の任意のアイデア。背景画像の変更のためにサファリに画像をプリロードする
これは、私は、背景の変更を処理しています方法です:
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)
CSSクラス:画像上onload
イベントの後、背景を変更する
.header-2.bg1 {
background-image: url('/img/bg1.png');
}
.header-2.bg2 {
}
.header-2.bg3 {
}
タイマーの時にイメージの 'src'を変更するのではなく、イメージがロードされた複数の要素を持つことができますか?' z-index'を変更して、画像に透明性がある場合は、不透明度をゼロに設定して非表示の要素を非表示にすることができます。 – ConnorsFan