【问题标题】:Can't get background color animation to work in jQuery?无法让背景颜色动画在 jQuery 中工作?
【发布时间】:2011-02-16 17:16:34
【问题描述】:

看来这个问题已经回答了:jQuery animate backgroundColor

但是,我从 Andrew 那里复制/粘贴了给定的代码(请参阅第二个答案)到我的 javascript 文件的顶部,然后执行它:

jQuery(".myClass").animate({width : "15px", backgroundColor: "purple"});

然后什么也没有发生。宽度动画有效,但 backgroundColor 无效。

我正在使用 https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js

有什么想法吗?

【问题讨论】:

  • 你用的是哪个颜色插件?一些旧版本的颜色插件非常损坏,很可能与 jQuery 1.5 一起损坏。

标签: jquery background-color


【解决方案1】:

您还需要为彩色动画参考 jQuery UI。

jsfiddle 上的示例

【讨论】:

  • 终于有人用 jsfiddle 做 JS 例子了!
  • (+1) 我无法看到颜色的动画。更新了 jsfiddle 让它慢了一点,这样你就可以看到它发生了:jsfiddle.net/25vwP/2
【解决方案2】:

我使用的代码是这样的:

(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(!g.colorInit){g.start=c(g.elem,e);g.end=b(g.end);g.colorInit=true}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);

不管什么原因,我不得不把它放在jQuery(document).ready(function())

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2010-09-16
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2015-08-11
    • 2010-11-20
    相关资源
    最近更新 更多