我正在建立一个循环遍历3个不同背景的页面,每750ms更改一次。为了做到这一点,我添加了一个类与相关的背景图片,改变与JS。对于第一个循环,它们会闪烁,因为图像必须加载,所以它不会立即显示。因此,是否有任何方法可用于预加载图像?预加载背景图像
CSS:
&.backgrounds{
background-position: center bottom;
background-repeat: no-repeat;
background-size: 130%;
&.freddy{
background-image: url(/img/illustrations/snapchat/snapchat_holding_page_freddy.jpg);
}
&.irene{
background-image: url(/img/illustrations/snapchat/snapchat_holding_page_irene.jpg);
}
&.joe{
background-image: url(/img/illustrations/snapchat/snapchat_holding_page_joe.jpg);
}
}
JS:
setInterval(function() {
if ($('.backgrounds').hasClass('freddy')){
$('.backgrounds').removeClass('freddy').addClass('irene');
} else if ($('.backgrounds').hasClass('irene')){
$('.backgrounds').removeClass('irene').addClass('joe');
} else if ($('.backgrounds').hasClass('joe')){
$('.backgrounds').removeClass('joe').addClass('freddy');
}
}, 750);
一方面,您可能想考虑将间隔更改为每隔几秒而不是每隔750毫秒。大多数人会因为这种快速闪烁的事情而感到非常烦恼。作为一名注意力不集中的人,我可以告诉你,页面上快速闪烁的内容使人们很难专注于阅读页面上的任何内容;这太让人分心了。即使没有ADD的人也会因分心而受损。 –
很好的答案!一个建议:目前,所有图像都在显示第一个图像之前加载。它可能是一个很好的替代解决方案,只在需要时才加载映像,并简单地延迟交换机,直到Promise解决。这意味着对于第一个循环,您还不能使用间隔,而是需要确保(a)750毫秒(或任何您设置的)已经通过,并且(b)下一个图像被加载。事实上,Promise也可以很好地完成。 –
哦,现在的解决方案的另一个缺点是即使只有一个不能被访问,也不会显示背景图像。 –