【发布时间】:2017-08-03 10:04:58
【问题描述】:
我有一个每 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 类:
.header-2.bg1 {
background-image: url('/img/bg1.png');
}
.header-2.bg2 {
}
.header-2.bg3 {
}
【问题讨论】:
-
不是在计时器滴答时更改图像的
src,而是可以有几个元素,每个元素都加载了它的图像,然后更改z-index以将你想要的元素放在前面想?如果图像具有透明度,您可以通过将其不透明度设置为零来使隐藏元素不可见。
标签: javascript jquery html css safari