我正在建立一個循環遍歷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也可以很好地完成。 –
哦,現在的解決方案的另一個缺點是即使只有一個不能被訪問,也不會顯示背景圖像。 –