jquery.color-RGBa-patch.js
资源名称:MagicLine.rar [点击查看]
上传用户:urdevil
上传日期:2022-07-20
资源大小:7k
文件大小:5k
源码类别:
JavaScript
开发平台:
Others
- /*
- * jQuery Color Animations
- * Copyright 2007 John Resig
- * Download by http://www.codefans.net
- * Released under the MIT and GPL licenses.
- */
- (function(jQuery){
- // We override the animation for all of these color styles
- jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
- jQuery.fx.step[attr] = function(fx){
- if ( fx.colorFunction == undefined || fx.state == 0 ) {
- fx.start = getColor( fx.elem, attr );
- fx.end = getRGB( fx.end );
- if ( fx.start == undefined ) {
- fx.start = [ 255,255,255,0 ];
- } else {
- if ( fx.start[3] == undefined ) // if alpha channel is not spotted
- fx.start[3] = 1; // assume it is fully opaque
- if ( fx.start[3] == 0 ) // if alpha is present and fully transparent
- fx.start[0] = fx.start[1] = fx.start[2] = 255; // assume starting with white
- }
- if ( fx.end[3] == undefined ) // if alpha channel is not spotted
- fx.end[3] = 1; // assume it is fully opaque
- fx.colorFunction = ( fx.start[3] == 1 && fx.end[3] == 1 ? calcRGB : calcRGBa );
- }
- fx.elem.style[attr] = fx.colorFunction();
- }
- });
- var calcRGB = function() {
- return 'rgb(' +
- Math.max(Math.min( parseInt((this.pos * (this.end[0] - this.start[0])) + this.start[0]), 255), 0) + ',' +
- Math.max(Math.min( parseInt((this.pos * (this.end[1] - this.start[1])) + this.start[1]), 255), 0) + ',' +
- Math.max(Math.min( parseInt((this.pos * (this.end[2] - this.start[2])) + this.start[2]), 255), 0) + ')';
- };
- var calcRGBa = function() {
- return 'rgba(' +
- Math.max(Math.min( parseInt((this.pos * (this.end[0] - this.start[0])) + this.start[0]), 255), 0) + ',' +
- Math.max(Math.min( parseInt((this.pos * (this.end[1] - this.start[1])) + this.start[1]), 255), 0) + ',' +
- Math.max(Math.min( parseInt((this.pos * (this.end[2] - this.start[2])) + this.start[2]), 255), 0) + ',' +
- Math.max(Math.min( parseFloat((this.pos * (this.end[3] - this.start[3])) + this.start[3]), 1), 0) + ')';
- };
- // Color Conversion functions from highlightFade
- // By Blair Mitchelmore
- // http://jquery.offput.ca/highlightFade/
- // Parse strings looking for color tuples [255,255,255]
- function getRGB(color) {
- var result;
- // Check if we're already dealing with an array of colors
- if ( color && color.constructor == Array && color.length >= 3 )
- return color;
- // Look for rgb(num,num,num)
- if (result = /rgba?(s*([0-9]{1,3})s*,s*([0-9]{1,3})s*,s*([0-9]{1,3})s*,?s*((?:[0-9](?:.[0-9]+)?)?)s*)/.exec(color))
- return [ parseInt(result[1]), parseInt(result[2]), parseInt(result[3]), parseFloat(result[4]||1) ];
- // Look for rgb(num%,num%,num%)
- if (result = /rgba?(s*([0-9]+(?:.[0-9]+)?)%s*,s*([0-9]+(?:.[0-9]+)?)%s*,s*([0-9]+(?:.[0-9]+)?)%s*,?s*((?:[0-9](?:.[0-9]+)?)?)s*)/.exec(color))
- return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55, parseFloat(result[4]||1)];
- // Look for #a0b1c2
- if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
- return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
- // Look for #fff
- if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
- return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
- // Otherwise, we're most likely dealing with a named color
- var colorName = jQuery.trim(color).toLowerCase();
- if ( colors[colorName] != undefined )
- return colors[colorName];
- return [ 255, 255, 255, 0 ];
- }
- function getColor(elem, attr) {
- var color;
- do {
- color = jQuery.curCSS(elem, attr);
- // Keep going until we find an element that has color, or we hit the body
- if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
- break;
- attr = "backgroundColor";
- } while ( elem = elem.parentNode );
- return getRGB(color);
- };
- // Some named colors to work with
- // From Interface by Stefan Petre
- // http://interface.eyecon.ro/
- var colors = {
- 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]
- };
- })(jQuery);