我有一个带有id的div - #hero。 div的内容将是放置在数组中的图像,该数组需要放在id:#hero的css中。我应用了一个fadeToggle效果,尝试使用图像数组随机淡入和淡出,间隔时间。
我一直在努力想出一个完全可行的解决方案。例如,这个 -
$(function(){
var transition_time = 5000;
var waiting_time = 500;
var pictures = ['0.jpg', '1.jpg', '2.jpg']; //array of images
var n = pictures.length;
var i;
var res = '';
var current = Math.floor(Math.random() * n);
function f(){
for (i = 0; i < n; i++) {
res += $('#hero').css({'background-image': 'url(images/' + pictures[current] + ')'}).fadeToggle(transition_time);
}
}
setInterval(f, transition_time);
})
</script>
请问,我如何达到预期的效果?我真的很感激一些反馈。
答案 0 :(得分:3)
你有这个功能的方式有几个问题。
而是如何检查是否显示div。如果没有,请更改图像并显示它。如果是,则将其淡出,更改图像,然后将其淡入。
我使用的是颜色而不是图像:https://jsfiddle.net/r8ntauk8/42/
$(document).ready(function(){
var transition_time = 5000;
var waiting_time = 500;
var colors = ['#3f51b5','#009688','#ff5722']; //array of colors
var n = colors.length;
function f(){
var current = Math.floor(Math.random() * n);
// If #hero is hidden (first time only) change the color, then fadeIn
if($('#hero').css('display') == 'none') {
$('#hero').css({
'background-color': colors[current]
}).fadeIn(waiting_time);
}
// if #hero is not hidden, fadeOut, change color, then fadeIn
else {
$('#hero').fadeOut(waiting_time, function(){
$('#hero').css({
'background-color': colors[current]
}).fadeIn(waiting_time);
});
}
}
// run the function, then set the interval
f();
setInterval(f, transition_time);
});
注意:你可能希望在#hero div周围有一个包装器,否则下面的内容会向上移动而英雄div显示为none。