Вы не можете сделать это по умолчанию в jQuery, вы даже не можете анимировать плоские цвета без соответствующего плагина.
Анимация градиентов сложна из-за различий в синтаксисе между браузерами.Я написал плагин для очень конкретного случая, который может быть полезен для вас.Это для линейного градиента, но вы можете настроить его для радиального.
jQuery.fx.step.gradient = function(fx) {
if (fx.state == 0) { //On the start iteration, convert the colors to arrays for calculation.
fx.start = fx.elem.style.background.match(/\d+/g); //Parse original state for numbers. Tougher because radial gradients have more of them
fx.start[0] = parseInt(fx.start[0]);
fx.start[1] = parseInt(fx.start[1]);
fx.start[2] = parseInt(fx.start[2]);
fx.end = fx.end.match(/\d+/g);
fx.end[0] = parseInt(fx.end[0]);
fx.end[1] = parseInt(fx.end[1]);
fx.end[2] = parseInt(fx.end[2]);
}
fx.elem.style.background = "-webkit-linear-gradient(rgb(" + [
Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
].join(",") + ")," + "rgb(0,0,0))";
}
$(this).animate({"gradient": "rgb(0, 255, 0)"});
DEMO.
Вы, вероятно, хотите создать две функции, одну для внутреннего цвета (jQuery.fx.step.innerColor
) и один для внешнего (jQuery.fx.step.outerColor
), который будет называться так:
$(this).animate({"innerColor": "rgb(25,25,25)",
"outerColor": "rgb(50,50,50)"});