【发布时间】:2011-09-27 19:14:57
【问题描述】:
几天前我问了一个问题,我得到了一个答案,这并没有真正回答它,但它给了我一个想法......下面的代码在那个答案中,过了一会儿我就明白了...... .除了一部分。我想为一些径向渐变设置动画,那个人做了一个 jQuery 插件,它没有做我想要的,但它至少是一些基础。所以我不明白的部分是带有命令的部分
.match(\d+/g))
他以某种方式(如果我是对的)从渐变中获得了 RGB,然后用它在两种颜色之间制作动画。我试图在 google 和 jQ 文档上找到一些东西,但我找不到可以开始的东西。
所以我的问题是如何从 CSS 中获取一些东西,比如渐变的部分等?我想为 jQuery 制作一个渐变动画插件,但直到我弄清楚如何只更改部分 css 属性而不像他那样更改整个属性时,我才能做到。
-- His example
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)"});
--大卫
【问题讨论】:
-
如果你能从
$(".selector").css("-webkit-radial-gradient")之类的东西中得到结果,那你就走运了,但我觉得这没什么用。 -
@JamWaffles 不多,但请解释一下:)
标签: javascript jquery html css gradient