4

是否可以在循环中为元素的背景颜色设置动画?

例如:如果我们有一个<div>具有background-color:red并通过 jQuery 我将其更改为background-color:blue. 现在我想让它toggle在红色和蓝色之间连续

我该怎么做?

4

5 回答 5

11

于不纨绔

@keyframes epilepsy {
    from {
        background: red;
        color:blue;
    }
    to {
        background: blue;
        color:red;
    }
}

.element {
    animation-duration: 0.1s;
    animation-name: epilepsy;
    animation-iteration-count: infinite;
    animation-direction: alternate;
}

工作演示

注意:我没有添加供应商前缀

更新

如果我们能让它在旧版浏览器上运行,那就太好了!

我有点热心,包括使用 jQuery 和的后备。请注意,jQuery animate 默认不支持背景色过渡;需要jQuery 颜色插件

$(document).ready(function() {  
  // Using Modernizr to test if CSS transition is supported or not
  if(!Modernizr.csstransitions){
    setInterval(function() {
      // Go really crazy and do the amazing voodoo using JavaScript
      $('.default').animate({
        backgroundColor: 'red',
        color: 'blue'
      }, 100).animate({
        backgroundColor: 'blue',
        color: 'red'
      }, 100); 
    }, 100);
 });

});
于 2013-06-24T07:39:54.300 回答
6

CSS

.divClassRed{
    background-color:red;
}
.divClassBlue{
    background-color:blue;
}

jQuery

setInterval(function(){
    if($('#myDiv').hasClass('divClassRed')){
        $('#myDiv').addClass('divClassBlue').removeClass('divClassRed');            
    }else{
        $('#myDiv').addClass('divClassRed').removeClass('divClassBlue');
    }

},1000);

演示

于 2013-06-24T07:32:17.170 回答
1

看看这个 JS 小提琴http://jsfiddle.net/uU4gu/

setInterval(function () {
    $('div').css("background-color", "yellow");
    setTimeout(function () {
        $('div').css("background-color", "red");
    }, 1000);   
}, 2000);
于 2013-06-24T07:29:23.647 回答
1

看看这个小提琴.. http://jsfiddle.net/SidJadeja/XqwDC/

只需调用递归函数来连续动画红色和蓝色之间的切换。您可以根据需要修改持续时间。

JS:

function anim() {
    $("body").animate({
        backgroundColor: "darkblue"
    }, {
        duration: 5000,
        complete: function () {
            $("body").animate({
                 backgroundColor: "darkred"
            }, {
                duration: 5000,
                complete: function () {
                    anim();
                }
            });
        }
    });
}
于 2013-08-26T12:45:29.330 回答
1

尝试这个

var x;

     function changecolors() {
         x = 1;
         setInterval(change, 1000);
     }

     function change() {
         if(x == 1) {
             color = "red";
             x = 2;
         } else {
             color = "blue";
             x = 1;
         }

         document.body.style.background = color;
     }
于 2013-06-24T07:27:26.337 回答