是否可以在循环中为元素的背景颜色设置动画?
例如:如果我们有一个<div>
具有background-color:red
并通过 jQuery 我将其更改为background-color:blue
. 现在我想让它toggle
在红色和蓝色之间连续。
我该怎么做?
是否可以在循环中为元素的背景颜色设置动画?
例如:如果我们有一个<div>
具有background-color:red
并通过 jQuery 我将其更改为background-color:blue
. 现在我想让它toggle
在红色和蓝色之间连续。
我该怎么做?
@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 和modernizr的后备。请注意,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);
});
});
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);
看看这个 JS 小提琴http://jsfiddle.net/uU4gu/
setInterval(function () {
$('div').css("background-color", "yellow");
setTimeout(function () {
$('div').css("background-color", "red");
}, 1000);
}, 2000);
看看这个小提琴.. 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();
}
});
}
});
}
尝试这个
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;
}