jquery - CSS 背景变化之间的延迟

标签 jquery css

我试图通过在函数上调用 setTimeout 来旋转 CSS 背景,但是代码没有按预期工作。只有一个过渡,然后它会立即跳到最后一张图像。

JsFiddle

var func = function () { 

    setTimeout( function(){
      $('#rotator').css("background-image", "url(http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/diamond_upholstery.png)"); 
    },2000);

    setTimeout( function(){
      $('#rotator').css("background-image", "url(http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/subtle_stripes.png)"); 
    },2000);

    setTimeout( function(){
      $('#rotator').css("background-image", "url(http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/struckaxiom.png)"); 
    },2000);

    setTimeout( function(){
      $('#rotator').css("background-image", "urlhttp://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/dark_stripes.png)"); 
    },2000);

    setTimeout(func, 0);

}
setTimeout(func, 0);

谢谢

最佳答案

您可以使用 setInterval 代替 setTimeout:

var i = 0;
var rotator = document.querySelector('#rotator');
var path = 'http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/';

var backgrounds = [
'diamond_upholstery',
'subtle_stripes',
'struckaxiom',
'dark_stripes'
];

function func(i) {
setInterval(function(){
if (i === (backgrounds.length-1)) {i = 0;} else {i++;}
rotator.style.backgroundImage = 'url(' + path + backgrounds[i] + '.png)';}, 2000);
}

window.onload = func(i);
#rotator {
width: 160px;
height: 160px;
background-image:url('http://subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/diamond_upholstery.png');
}
<div id="rotator">
</div>

关于jquery - CSS 背景变化之间的延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33854816/

相关文章:

javascript - 使用 bootstrap 向下和向后滚动

jquery - 如何在填写完所有输入后显示 div

php - parse_str 随机向键添加分号

javascript - 如何从 javascript 发送多个单选按钮组值

php - 如何更改xdebug输出的颜色?

html - CSS:div 上的 padding-bottom 和 max-height 不能很好地协同工作

javascript - JavaScript/jQuery 如何在多个 ajax 响应上调用回调函数

html - 表格内 CSS 跨度高度 100%

css - 一个 CSS 选择器 "inherit"可以是另一个选择器的所有声明吗?

javascript - html中的粘性图像占用标题中的空间