是否可以在jQuery中为background-color
设置动画,因为它无效。
$('#something').animate({
background :"red"
}, 1000);
答案 0 :(得分:5)
来自docs,
jQuery UI项目通过允许对颜色等非数字样式进行动画处理来扩展
.animate()
方法。该项目还包括通过CSS类而不是单个属性指定动画的机制。
因此,如果您使用jQuery UI,则可以为背景颜色设置动画。只需确保使用backgroundColor
而不是background
。
jQuery的color animations plugin也可以。
答案 1 :(得分:2)
你需要一个插件来使用jQuery做彩色动画:
答案 2 :(得分:1)
试试这个:
$('#something').animate({ backgroundColor: "#FF0000" }, 1000, null, function () {
$('#something').css("backgroundColor", "#FF0000");
});
我在动画方面取得了不同的成功,但发现使用内置的回调加上jQuery的css似乎适用于大多数情况。使用jQuery 1.5在IE9,FF4,Chrome中测试。
要获得更完整的解决方案,请添加以下插件:
$(document).ready(function () {
$.fn.animateHighlight = function (highlightColor, duration) {
var highlightBg = highlightColor || "#FF0000";
var animateMs = duration || 1000;
var originalBg = this.css("background-color");
if (!originalBg || originalBg == highlightBg)
originalBg = "#FFFFFF"; // default to white
jQuery(this)
.css("backgroundColor", highlightBg)
.animate({ backgroundColor: originalBg }, animateMs, null, function () {
jQuery(this).css("backgroundColor", originalBg);
});
};
});
并称之为:
$('#something').animateHighlight();
答案 3 :(得分:1)
这是使用纯jQuery动画RGB颜色的简单代码(而不是使用jQuery.Color插件)
var start = [255, 0, 0], end=[255,255,255];
$('#element').animate({'aaa': 1}, {step: function(now){
$(this).css('background-color', 'rgb('+
parseInt(start[0] + (end[0]-start[0]) * now) + ',' +
parseInt(start[1] + (end[1]-start[1]) * now) + ',' +
parseInt(start[2] + (end[2]-start[2]) * now) + ')'
)
}, complete: function(){$(this).css('aaa', 0)}})
答案 4 :(得分:0)
您可以使用CSS3过渡来获得相同的效果。
可以实现你的动画效果#something {
-webkit-transition: background-color 1s linear;
transition: background-color 1s linear;
background: red;
}
此解决方案的唯一问题是< 10 support
答案 5 :(得分:0)
使用类似的语法(...{background-color :"red"}...
),我收到错误
SyntaxError:意外的令牌 -
我能够通过将CSS属性background-color
封装在单引号中来实现它:
$('#something').animate({
'background-color' :"red"
}, 1000);