WordPress源代码——jquery-plugins(jquery.color-2.1.0.js)

1 /*!
2 * jQuery Color Animations v2.1.0
3 * http://jquery.com/
4 *
5 * Copyright 2012 jQuery Foundation and other contributors
6 * Released under the MIT license.
7 * http://jquery.org/license
8 *
9 * Date: Fri Aug 24 12:02:24 2012 -0500
10 */
11 (function( jQuery, undefined ) {
12
13 var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
14
15 // plusequals test for += 100 -= 100
16 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
17 // a set of RE's that can match strings and generate color tuples.
18 stringParsers = [{
19 re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
20 parse: function( execResult ) {
21 return [
22 execResult[ 1 ],
23 execResult[ 2 ],
24 execResult[ 3 ],
25 execResult[ 4 ]
26 ];
27 }
28 }, {
29 re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
30 parse: function( execResult ) {
31 return [
32 execResult[ 1 ] * 2.55,
33 execResult[ 2 ] * 2.55,
34 execResult[ 3 ] * 2.55,
35 execResult[ 4 ]
36 ];
37 }
38 }, {
39 // this regex ignores A-F because it's compared against an already lowercased string
40 re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
41 parse: function( execResult ) {
42 return [
43 parseInt( execResult[ 1 ], 16 ),
44 parseInt( execResult[ 2 ], 16 ),
45 parseInt( execResult[ 3 ], 16 )
46 ];
47 }
48 }, {
49 // this regex ignores A-F because it's compared against an already lowercased string
50 re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
51 parse: function( execResult ) {
52 return [
53 parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
54 parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
55 parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
56 ];
57 }
58 }, {
59 re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
60 space: "hsla",
61 parse: function( execResult ) {
62 return [
63 execResult[ 1 ],
64 execResult[ 2 ] / 100,
65 execResult[ 3 ] / 100,
66 execResult[ 4 ]
67 ];
68 }
69 }],
70
71 // jQuery.Color( )
72 color = jQuery.Color = function( color, green, blue, alpha ) {
73 return new jQuery.Color.fn.parse( color, green, blue, alpha );
74 },
75 spaces = {
76 rgba: {
77 props: {
78 red: {
79 idx: 0,
80 type: "byte"
81 },
82 green: {
83 idx: 1,
84 type: "byte"
85 },
86 blue: {
87 idx: 2,
88 type: "byte"
89 }
90 }
91 },
92
93 hsla: {
94 props: {
95 hue: {
96 idx: 0,
97 type: "degrees"
98 },
99 saturation: {
100 idx: 1,
101 type: "percent"
102 },
103 lightness: {
104 idx: 2,
105 type: "percent"
106 }
107 }
108 }
109 },
110 propTypes = {
111 "byte": {
112 floor: true,
113 max: 255
114 },
115 "percent": {
116 max: 1
117 },
118 "degrees": {
119 mod: 360,
120 floor: true
121 }
122 },
123 support = color.support = {},
124
125 // element for support tests
126 supportElem = jQuery( "<p>" )[ 0 ],
127
128 // colors = jQuery.Color.names
129 colors,
130
131 // local aliases of functions called often
132 each = jQuery.each;
133
134 // determine rgba support immediately
135 supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
136 support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
137
138 // define cache name and alpha properties
139 // for rgba and hsla spaces
140 each( spaces, function( spaceName, space ) {
141 space.cache = "_" + spaceName;
142 space.props.alpha = {
143 idx: 3,
144 type: "percent",
145 def: 1
146 };
147 });
148
149 function clamp( value, prop, allowEmpty ) {
150 var type = propTypes[ prop.type ] || {};
151
152 if ( value == null ) {
153 return (allowEmpty || !prop.def) ? null : prop.def;
154 }
155
156 // ~~ is an short way of doing floor for positive numbers
157 value = type.floor ? ~~value : parseFloat( value );
158
159 // IE will pass in empty strings as value for alpha,
160 // which will hit this case
161 if ( isNaN( value ) ) {
162 return prop.def;
163 }
164
165 if ( type.mod ) {
166 // we add mod before modding to make sure that negatives values
167 // get converted properly: -10 -> 350
168 return (value + type.mod) % type.mod;
169 }
170
171 // for now all property types without mod have min and max
172 return 0 > value ? 0 : type.max < value ? type.max : value;
173 }
174
175 function stringParse( string ) {
176 var inst = color(),
177 rgba = inst._rgba = [];
178
179 string = string.toLowerCase();
180
181 each( stringParsers, function( i, parser ) {
182 var parsed,
183 match = parser.re.exec( string ),
184 values = match && parser.parse( match ),
185 spaceName = parser.space || "rgba";
186
187 if ( values ) {
188 parsed = inst[ spaceName ]( values );
189
190 // if this was an rgba parse the assignment might happen twice
191 // oh well....
192 inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
193 rgba = inst._rgba = parsed._rgba;
194
195 // exit each( stringParsers ) here because we matched
196 return false;
197 }
198 });
199
200 // Found a stringParser that handled it
201 if ( rgba.length ) {
202
203 // if this came from a parsed string, force "transparent" when alpha is 0
204 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
205 if ( rgba.join() === "0,0,0,0" ) {
206 jQuery.extend( rgba, colors.transparent );
207 }
208 return inst;
209 }
210
211 // named colors
212 return colors[ string ];
213 }
214
215 color.fn = jQuery.extend( color.prototype, {
216 parse: function( red, green, blue, alpha ) {
217 if ( red === undefined ) {
218 this._rgba = [ null, null, null, null ];
219 return this;
220 }
221 if ( red.jquery || red.nodeType ) {
222 red = jQuery( red ).css( green );
223 green = undefined;
224 }
225
226 var inst = this,
227 type = jQuery.type( red ),
228 rgba = this._rgba = [],
229 source;
230
231 // more than 1 argument specified - assume ( red, green, blue, alpha )
232 if ( green !== undefined ) {
233 red = [ red, green, blue, alpha ];
234 type = "array";
235 }
236
237 if ( type === "string" ) {
238 return this.parse( stringParse( red ) || colors._default );
239 }
240
241 if ( type === "array" ) {
242 each( spaces.rgba.props, function( key, prop ) {
243 rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
244 });
245 return this;
246 }
247
248 if ( type === "object" ) {
249 if ( red instanceof color ) {
250 each( spaces, function( spaceName, space ) {
251 if ( red[ space.cache ] ) {
252 inst[ space.cache ] = red[ space.cache ].slice();
253 }
254 });
255 } else {
256 each( spaces, function( spaceName, space ) {
257 var cache = space.cache;
258 each( space.props, function( key, prop ) {
259
260 // if the cache doesn't exist, and we know how to convert
261 if ( !inst[ cache ] && space.to ) {
262
263 // if the value was null, we don't need to copy it
264 // if the key was alpha, we don't need to copy it either
265 if ( key === "alpha" || red[ key ] == null ) {
266 return;
267 }
268 inst[ cache ] = space.to( inst._rgba );
269 }
270
271 // this is the only case where we allow nulls for ALL properties.
272 // call clamp with alwaysAllowEmpty
273 inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
274 });
275
276 // everything defined but alpha?
277 if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
278 // use the default of 1
279 inst[ cache ][ 3 ] = 1;
280 if ( space.from ) {
281 inst._rgba = space.from( inst[ cache ] );
282 }
283 }
284 });
285 }
286 return this;
287 }
288 },
289 is: function( compare ) {
290 var is = color( compare ),
291 same = true,
292 inst = this;
293
294 each( spaces, function( _, space ) {
295 var localCache,
296 isCache = is[ space.cache ];
297 if (isCache) {
298 localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
299 each( space.props, function( _, prop ) {
300 if ( isCache[ prop.idx ] != null ) {
301 same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
302 return same;
303 }
304 });
305 }
306 return same;
307 });
308 return same;
309 },
310 _space: function() {
311 var used = [],
312 inst = this;
313 each( spaces, function( spaceName, space ) {
314 if ( inst[ space.cache ] ) {
315 used.push( spaceName );
316 }
317 });
318 return used.pop();
319 },
320 transition: function( other, distance ) {
321 var end = color( other ),
322 spaceName = end._space(),
323 space = spaces[ spaceName ],
324 startColor = this.alpha() === 0 ? color( "transparent" ) : this,
325 start = startColor[ space.cache ] || space.to( startColor._rgba ),
326 result = start.slice();
327
328 end = end[ space.cache ];
329 each( space.props, function( key, prop ) {
330 var index = prop.idx,
331 startValue = start[ index ],
332 endValue = end[ index ],
333 type = propTypes[ prop.type ] || {};
334
335 // if null, don't override start value
336 if ( endValue === null ) {
337 return;
338 }
339 // if null - use end
340 if ( startValue === null ) {
341 result[ index ] = endValue;
342 } else {
343 if ( type.mod ) {
344 if ( endValue - startValue > type.mod / 2 ) {
345 startValue += type.mod;
346 } else if ( startValue - endValue > type.mod / 2 ) {
347 startValue -= type.mod;
348 }
349 }
350 result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
351 }
352 });
353 return this[ spaceName ]( result );
354 },
355 blend: function( opaque ) {
356 // if we are already opaque - return ourself
357 if ( this._rgba[ 3 ] === 1 ) {
358 return this;
359 }
360
361 var rgb = this._rgba.slice(),
362 a = rgb.pop(),
363 blend = color( opaque )._rgba;
364
365 return color( jQuery.map( rgb, function( v, i ) {
366 return ( 1 - a ) * blend[ i ] + a * v;
367 }));
368 },
369 toRgbaString: function() {
370 var prefix = "rgba(",
371 rgba = jQuery.map( this._rgba, function( v, i ) {
372 return v == null ? ( i > 2 ? 1 : 0 ) : v;
373 });
374
375 if ( rgba[ 3 ] === 1 ) {
376 rgba.pop();
377 prefix = "rgb(";
378 }
379
380 return prefix + rgba.join() + ")";
381 },
382 toHslaString: function() {
383 var prefix = "hsla(",
384 hsla = jQuery.map( this.hsla(), function( v, i ) {
385 if ( v == null ) {
386 v = i > 2 ? 1 : 0;
387 }
388
389 // catch 1 and 2
390 if ( i && i < 3 ) {
391 v = Math.round( v * 100 ) + "%";
392 }
393 return v;
394 });
395
396 if ( hsla[ 3 ] === 1 ) {
397 hsla.pop();
398 prefix = "hsl(";
399 }
400 return prefix + hsla.join() + ")";
401 },
402 toHexString: function( includeAlpha ) {
403 var rgba = this._rgba.slice(),
404 alpha = rgba.pop();
405
406 if ( includeAlpha ) {
407 rgba.push( ~~( alpha * 255 ) );
408 }
409
410 return "#" + jQuery.map( rgba, function( v, i ) {
411
412 // default to 0 when nulls exist
413 v = ( v || 0 ).toString( 16 );
414 return v.length === 1 ? "0" + v : v;
415 }).join("");
416 },
417 toString: function() {
418 return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
419 }
420 });
421 color.fn.parse.prototype = color.fn;
422
423 // hsla conversions adapted from:
424 // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
425
426 function hue2rgb( p, q, h ) {
427 h = ( h + 1 ) % 1;
428 if ( h * 6 < 1 ) {
429 return p + (q - p) * h * 6;
430 }
431 if ( h * 2 < 1) {
432 return q;
433 }
434 if ( h * 3 < 2 ) {
435 return p + (q - p) * ((2/3) - h) * 6;
436 }
437 return p;
438 }
439
440 spaces.hsla.to = function ( rgba ) {
441 if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
442 return [ null, null, null, rgba[ 3 ] ];
443 }
444 var r = rgba[ 0 ] / 255,
445 g = rgba[ 1 ] / 255,
446 b = rgba[ 2 ] / 255,
447 a = rgba[ 3 ],
448 max = Math.max( r, g, b ),
449 min = Math.min( r, g, b ),
450 diff = max - min,
451 add = max + min,
452 l = add * 0.5,
453 h, s;
454
455 if ( min === max ) {
456 h = 0;
457 } else if ( r === max ) {
458 h = ( 60 * ( g - b ) / diff ) + 360;
459 } else if ( g === max ) {
460 h = ( 60 * ( b - r ) / diff ) + 120;
461 } else {
462 h = ( 60 * ( r - g ) / diff ) + 240;
463 }
464
465 if ( l === 0 || l === 1 ) {
466 s = l;
467 } else if ( l <= 0.5 ) {
468 s = diff / add;
469 } else {
470 s = diff / ( 2 - add );
471 }
472 return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
473 };
474
475 spaces.hsla.from = function ( hsla ) {
476 if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
477 return [ null, null, null, hsla[ 3 ] ];
478 }
479 var h = hsla[ 0 ] / 360,
480 s = hsla[ 1 ],
481 l = hsla[ 2 ],
482 a = hsla[ 3 ],
483 q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
484 p = 2 * l - q,
485 r, g, b;
486
487 return [
488 Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
489 Math.round( hue2rgb( p, q, h ) * 255 ),
490 Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
491 a
492 ];
493 };
494
495
496 each( spaces, function( spaceName, space ) {
497 var props = space.props,
498 cache = space.cache,
499 to = space.to,
500 from = space.from;
501
502 // makes rgba() and hsla()
503 color.fn[ spaceName ] = function( value ) {
504
505 // generate a cache for this space if it doesn't exist
506 if ( to && !this[ cache ] ) {
507 this[ cache ] = to( this._rgba );
508 }
509 if ( value === undefined ) {
510 return this[ cache ].slice();
511 }
512
513 var ret,
514 type = jQuery.type( value ),
515 arr = ( type === "array" || type === "object" ) ? value : arguments,
516 local = this[ cache ].slice();
517
518 each( props, function( key, prop ) {
519 var val = arr[ type === "object" ? key : prop.idx ];
520 if ( val == null ) {
521 val = local[ prop.idx ];
522 }
523 local[ prop.idx ] = clamp( val, prop );
524 });
525
526 if ( from ) {
527 ret = color( from( local ) );
528 ret[ cache ] = local;
529 return ret;
530 } else {
531 return color( local );
532 }
533 };
534
535 // makes red() green() blue() alpha() hue() saturation() lightness()
536 each( props, function( key, prop ) {
537 // alpha is included in more than one space
538 if ( color.fn[ key ] ) {
539 return;
540 }
541 color.fn[ key ] = function( value ) {
542 var vtype = jQuery.type( value ),
543 fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
544 local = this[ fn ](),
545 cur = local[ prop.idx ],
546 match;
547
548 if ( vtype === "undefined" ) {
549 return cur;
550 }
551
552 if ( vtype === "function" ) {
553 value = value.call( this, cur );
554 vtype = jQuery.type( value );
555 }
556 if ( value == null && prop.empty ) {
557 return this;
558 }
559 if ( vtype === "string" ) {
560 match = rplusequals.exec( value );
561 if ( match ) {
562 value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
563 }
564 }
565 local[ prop.idx ] = value;
566 return this[ fn ]( local );
567 };
568 });
569 });
570
571 // add cssHook and .fx.step function for each named hook.
572 // accept a space separated string of properties
573 color.hook = function( hook ) {
574 var hooks = hook.split( " " );
575 each( hooks, function( i, hook ) {
576 jQuery.cssHooks[ hook ] = {
577 set: function( elem, value ) {
578 var parsed, curElem,
579 backgroundColor = "";
580
581 if ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) {
582 value = color( parsed || value );
583 if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
584 curElem = hook === "backgroundColor" ? elem.parentNode : elem;
585 while (
586 (backgroundColor === "" || backgroundColor === "transparent") &&
587 curElem && curElem.style
588 ) {
589 try {
590 backgroundColor = jQuery.css( curElem, "backgroundColor" );
591 curElem = curElem.parentNode;
592 } catch ( e ) {
593 }
594 }
595
596 value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
597 backgroundColor :
598 "_default" );
599 }
600
601 value = value.toRgbaString();
602 }
603 try {
604 elem.style[ hook ] = value;
605 } catch( value ) {
606 // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
607 }
608 }
609 };
610 jQuery.fx.step[ hook ] = function( fx ) {
611 if ( !fx.colorInit ) {
612 fx.start = color( fx.elem, hook );
613 fx.end = color( fx.end );
614 fx.colorInit = true;
615 }
616 jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
617 };
618 });
619
620 };
621
622 color.hook( stepHooks );
623
624 jQuery.cssHooks.borderColor = {
625 expand: function( value ) {
626 var expanded = {};
627
628 each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
629 expanded[ "border" + part + "Color" ] = value;
630 });
631 return expanded;
632 }
633 };
634
635 // Basic color names only.
636 // Usage of any of the other color names requires adding yourself or including
637 // jquery.color.svg-names.js.
638 colors = jQuery.Color.names = {
639 // 4.1. Basic color keywords
640 aqua: "#00ffff",
641 black: "#000000",
642 blue: "#0000ff",
643 fuchsia: "#ff00ff",
644 gray: "#808080",
645 green: "#008000",
646 lime: "#00ff00",
647 maroon: "#800000",
648 navy: "#000080",
649 olive: "#808000",
650 purple: "#800080",
651 red: "#ff0000",
652 silver: "#c0c0c0",
653 teal: "#008080",
654 white: "#ffffff",
655 yellow: "#ffff00",
656
657 // 4.2.3. ‘transparent’ color keyword
658 transparent: [ null, null, null, 0 ],
659
660 _default: "#ffffff"
661 };
662
663 })( jQuery );
664
665 /*!
666 * jQuery Color Animations v2.1.0 - SVG Color Names
667 * http://jquery.org/
668 *
669 * Remaining HTML/CSS color names per W3C's CSS Color Module Level 3.
670 * http://www.w3.org/TR/css3-color/#svg-color
671 *
672 * Copyright 2012 jQuery Foundation and other contributors
673 * Released under the MIT license.
674 * http://jquery.org/license
675 *
676 * Date: Fri Aug 24 12:02:24 2012 -0500
677 */
678 jQuery.extend( jQuery.Color.names, {
679 // 4.3. Extended color keywords (minus the basic ones in core color plugin)
680 aliceblue: "#f0f8ff",
681 antiquewhite: "#faebd7",
682 aquamarine: "#7fffd4",
683 azure: "#f0ffff",
684 beige: "#f5f5dc",
685 bisque: "#ffe4c4",
686 blanchedalmond: "#ffebcd",
687 blueviolet: "#8a2be2",
688 brown: "#a52a2a",
689 burlywood: "#deb887",
690 cadetblue: "#5f9ea0",
691 chartreuse: "#7fff00",
692 chocolate: "#d2691e",
693 coral: "#ff7f50",
694 cornflowerblue: "#6495ed",
695 cornsilk: "#fff8dc",
696 crimson: "#dc143c",
697 cyan: "#00ffff",
698 darkblue: "#00008b",
699 darkcyan: "#008b8b",
700 darkgoldenrod: "#b8860b",
701 darkgray: "#a9a9a9",
702 darkgreen: "#006400",
703 darkgrey: "#a9a9a9",
704 darkkhaki: "#bdb76b",
705 darkmagenta: "#8b008b",
706 darkolivegreen: "#556b2f",
707 darkorange: "#ff8c00",
708 darkorchid: "#9932cc",
709 darkred: "#8b0000",
710 darksalmon: "#e9967a",
711 darkseagreen: "#8fbc8f",
712 darkslateblue: "#483d8b",
713 darkslategray: "#2f4f4f",
714 darkslategrey: "#2f4f4f",
715 darkturquoise: "#00ced1",
716 darkviolet: "#9400d3",
717 deeppink: "#ff1493",
718 deepskyblue: "#00bfff",
719 dimgray: "#696969",
720 dimgrey: "#696969",
721 dodgerblue: "#1e90ff",
722 firebrick: "#b22222",
723 floralwhite: "#fffaf0",
724 forestgreen: "#228b22",
725 gainsboro: "#dcdcdc",
726 ghostwhite: "#f8f8ff",
727 gold: "#ffd700",
728 goldenrod: "#daa520",
729 greenyellow: "#adff2f",
730 grey: "#808080",
731 honeydew: "#f0fff0",
732 hotpink: "#ff69b4",
733 indianred: "#cd5c5c",
734 indigo: "#4b0082",
735 ivory: "#fffff0",
736 khaki: "#f0e68c",
737 lavender: "#e6e6fa",
738 lavenderblush: "#fff0f5",
739 lawngreen: "#7cfc00",
740 lemonchiffon: "#fffacd",
741 lightblue: "#add8e6",
742 lightcoral: "#f08080",
743 lightcyan: "#e0ffff",
744 lightgoldenrodyellow: "#fafad2",
745 lightgray: "#d3d3d3",
746 lightgreen: "#90ee90",
747 lightgrey: "#d3d3d3",
748 lightpink: "#ffb6c1",
749 lightsalmon: "#ffa07a",
750 lightseagreen: "#20b2aa",
751 lightskyblue: "#87cefa",
752 lightslategray: "#778899",
753 lightslategrey: "#778899",
754 lightsteelblue: "#b0c4de",
755 lightyellow: "#ffffe0",
756 limegreen: "#32cd32",
757 linen: "#faf0e6",
758 mediumaquamarine: "#66cdaa",
759 mediumblue: "#0000cd",
760 mediumorchid: "#ba55d3",
761 mediumpurple: "#9370db",
762 mediumseagreen: "#3cb371",
763 mediumslateblue: "#7b68ee",
764 mediumspringgreen: "#00fa9a",
765 mediumturquoise: "#48d1cc",
766 mediumvioletred: "#c71585",
767 midnightblue: "#191970",
768 mintcream: "#f5fffa",
769 mistyrose: "#ffe4e1",
770 moccasin: "#ffe4b5",
771 navajowhite: "#ffdead",
772 oldlace: "#fdf5e6",
773 olivedrab: "#6b8e23",
774 orange: "#ffa500",
775 orangered: "#ff4500",
776 orchid: "#da70d6",
777 palegoldenrod: "#eee8aa",
778 palegreen: "#98fb98",
779 paleturquoise: "#afeeee",
780 palevioletred: "#db7093",
781 papayawhip: "#ffefd5",
782 peachpuff: "#ffdab9",
783 peru: "#cd853f",
784 pink: "#ffc0cb",
785 plum: "#dda0dd",
786 powderblue: "#b0e0e6",
787 rosybrown: "#bc8f8f",
788 royalblue: "#4169e1",
789 saddlebrown: "#8b4513",
790 salmon: "#fa8072",
791 sandybrown: "#f4a460",
792 seagreen: "#2e8b57",
793 seashell: "#fff5ee",
794 sienna: "#a0522d",
795 skyblue: "#87ceeb",
796 slateblue: "#6a5acd",
797 slategray: "#708090",
798 slategrey: "#708090",
799 snow: "#fffafa",
800 springgreen: "#00ff7f",
801 steelblue: "#4682b4",
802 tan: "#d2b48c",
803 thistle: "#d8bfd8",
804 tomato: "#ff6347",
805 turquoise: "#40e0d0",
806 violet: "#ee82ee",
807 wheat: "#f5deb3",
808 whitesmoke: "#f5f5f5",
809 yellowgreen: "#9acd32",
810 });
1  /*!
2   * jQuery Color Animations v2.1.0
3   * http://jquery.com/
4   *
5   * Copyright 2012 jQuery Foundation and other contributors
6   * Released under the MIT license.
7   * http://jquery.org/license
8   *
9   * Date: Fri Aug 24 12:02:24 2012 -0500
10   */
11  (function( jQuery, undefined ) {
12  
13          var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
14  
15          // plusequals test for += 100 -= 100
16          rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
17          // a set of RE's that can match strings and generate color tuples.
18          stringParsers = [{
19                          re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
20                          parse: function( execResult ) {
21                                  return [
22                                          execResult[ 1 ],
23                                          execResult[ 2 ],
24                                          execResult[ 3 ],
25                                          execResult[ 4 ]
26                                  ];
27                          }
28                  }, {
29                          re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
30                          parse: function( execResult ) {
31                                  return [
32                                          execResult[ 1 ] * 2.55,
33                                          execResult[ 2 ] * 2.55,
34                                          execResult[ 3 ] * 2.55,
35                                          execResult[ 4 ]
36                                  ];
37                          }
38                  }, {
39                          // this regex ignores A-F because it's compared against an already lowercased string
40                          re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
41                          parse: function( execResult ) {
42                                  return [
43                                          parseInt( execResult[ 1 ], 16 ),
44                                          parseInt( execResult[ 2 ], 16 ),
45                                          parseInt( execResult[ 3 ], 16 )
46                                  ];
47                          }
48                  }, {
49                          // this regex ignores A-F because it's compared against an already lowercased string
50                          re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
51                          parse: function( execResult ) {
52                                  return [
53                                          parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
54                                          parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
55                                          parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
56                                  ];
57                          }
58                  }, {
59                          re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
60                          space: "hsla",
61                          parse: function( execResult ) {
62                                  return [
63                                          execResult[ 1 ],
64                                          execResult[ 2 ] / 100,
65                                          execResult[ 3 ] / 100,
66                                          execResult[ 4 ]
67                                  ];
68                          }
69                  }],
70  
71          // jQuery.Color( )
72          color = jQuery.Color = function( color, green, blue, alpha ) {
73                  return new jQuery.Color.fn.parse( color, green, blue, alpha );
74          },
75          spaces = {
76                  rgba: {
77                          props: {
78                                  red: {
79                                          idx: 0,
80                                          type: "byte"
81                                  },
82                                  green: {
83                                          idx: 1,
84                                          type: "byte"
85                                  },
86                                  blue: {
87                                          idx: 2,
88                                          type: "byte"
89                                  }
90                          }
91                  },
92  
93                  hsla: {
94                          props: {
95                                  hue: {
96                                          idx: 0,
97                                          type: "degrees"
98                                  },
99                                  saturation: {
100                                          idx: 1,
101                                          type: "percent"
102                                  },
103                                  lightness: {
104                                          idx: 2,
105                                          type: "percent"
106                                  }
107                          }
108                  }
109          },
110          propTypes = {
111                  "byte": {
112                          floor: true,
113                          max: 255
114                  },
115                  "percent": {
116                          max: 1
117                  },
118                  "degrees": {
119                          mod: 360,
120                          floor: true
121                  }
122          },
123          support = color.support = {},
124  
125          // element for support tests
126          supportElem = jQuery( "<p>" )[ 0 ],
127  
128          // colors = jQuery.Color.names
129          colors,
130  
131          // local aliases of functions called often
132          each = jQuery.each;
133  
134  // determine rgba support immediately
135  supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
136  support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
137  
138  // define cache name and alpha properties
139  // for rgba and hsla spaces
140  each( spaces, function( spaceName, space ) {
141          space.cache = "_" + spaceName;
142          space.props.alpha = {
143                  idx: 3,
144                  type: "percent",
145                  def: 1
146          };
147  });
148  
149  function clamp( value, prop, allowEmpty ) {
150          var type = propTypes[ prop.type ] || {};
151  
152          if ( value == null ) {
153                  return (allowEmpty || !prop.def) ? null : prop.def;
154          }
155  
156          // ~~ is an short way of doing floor for positive numbers
157          value = type.floor ? ~~value : parseFloat( value );
158  
159          // IE will pass in empty strings as value for alpha,
160          // which will hit this case
161          if ( isNaN( value ) ) {
162                  return prop.def;
163          }
164  
165          if ( type.mod ) {
166                  // we add mod before modding to make sure that negatives values
167                  // get converted properly: -10 -> 350
168                  return (value + type.mod) % type.mod;
169          }
170  
171          // for now all property types without mod have min and max
172          return 0 > value ? 0 : type.max < value ? type.max : value;
173  }
174  
175  function stringParse( string ) {
176          var inst = color(),
177                  rgba = inst._rgba = [];
178  
179          string = string.toLowerCase();
180  
181          each( stringParsers, function( i, parser ) {
182                  var parsed,
183                          match = parser.re.exec( string ),
184                          values = match && parser.parse( match ),
185                          spaceName = parser.space || "rgba";
186  
187                  if ( values ) {
188                          parsed = inst[ spaceName ]( values );
189  
190                          // if this was an rgba parse the assignment might happen twice
191                          // oh well....
192                          inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
193                          rgba = inst._rgba = parsed._rgba;
194  
195                          // exit each( stringParsers ) here because we matched
196                          return false;
197                  }
198          });
199  
200          // Found a stringParser that handled it
201          if ( rgba.length ) {
202  
203                  // if this came from a parsed string, force "transparent" when alpha is 0
204                  // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
205                  if ( rgba.join() === "0,0,0,0" ) {
206                          jQuery.extend( rgba, colors.transparent );
207                  }
208                  return inst;
209          }
210  
211          // named colors
212          return colors[ string ];
213  }
214  
215  color.fn = jQuery.extend( color.prototype, {
216          parse: function( red, green, blue, alpha ) {
217                  if ( red === undefined ) {
218                          this._rgba = [ null, null, null, null ];
219                          return this;
220                  }
221                  if ( red.jquery || red.nodeType ) {
222                          red = jQuery( red ).css( green );
223                          green = undefined;
224                  }
225  
226                  var inst = this,
227                          type = jQuery.type( red ),
228                          rgba = this._rgba = [],
229                          source;
230  
231                  // more than 1 argument specified - assume ( red, green, blue, alpha )
232                  if ( green !== undefined ) {
233                          red = [ red, green, blue, alpha ];
234                          type = "array";
235                  }
236  
237                  if ( type === "string" ) {
238                          return this.parse( stringParse( red ) || colors._default );
239                  }
240  
241                  if ( type === "array" ) {
242                          each( spaces.rgba.props, function( key, prop ) {
243                                  rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
244                          });
245                          return this;
246                  }
247  
248                  if ( type === "object" ) {
249                          if ( red instanceof color ) {
250                                  each( spaces, function( spaceName, space ) {
251                                          if ( red[ space.cache ] ) {
252                                                  inst[ space.cache ] = red[ space.cache ].slice();
253                                          }
254                                  });
255                          } else {
256                                  each( spaces, function( spaceName, space ) {
257                                          var cache = space.cache;
258                                          each( space.props, function( key, prop ) {
259  
260                                                  // if the cache doesn't exist, and we know how to convert
261                                                  if ( !inst[ cache ] && space.to ) {
262  
263                                                          // if the value was null, we don't need to copy it
264                                                          // if the key was alpha, we don't need to copy it either
265                                                          if ( key === "alpha" || red[ key ] == null ) {
266                                                                  return;
267                                                          }
268                                                          inst[ cache ] = space.to( inst._rgba );
269                                                  }
270  
271                                                  // this is the only case where we allow nulls for ALL properties.
272                                                  // call clamp with alwaysAllowEmpty
273                                                  inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
274                                          });
275  
276                                          // everything defined but alpha?
277                                          if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
278                                                  // use the default of 1
279                                                  inst[ cache ][ 3 ] = 1;
280                                                  if ( space.from ) {
281                                                          inst._rgba = space.from( inst[ cache ] );
282                                                  }
283                                          }
284                                  });
285                          }
286                          return this;
287                  }
288          },
289          is: function( compare ) {
290                  var is = color( compare ),
291                          same = true,
292                          inst = this;
293  
294                  each( spaces, function( _, space ) {
295                          var localCache,
296                                  isCache = is[ space.cache ];
297                          if (isCache) {
298                                  localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
299                                  each( space.props, function( _, prop ) {
300                                          if ( isCache[ prop.idx ] != null ) {
301                                                  same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
302                                                  return same;
303                                          }
304                                  });
305                          }
306                          return same;
307                  });
308                  return same;
309          },
310          _space: function() {
311                  var used = [],
312                          inst = this;
313                  each( spaces, function( spaceName, space ) {
314                          if ( inst[ space.cache ] ) {
315                                  used.push( spaceName );
316                          }
317                  });
318                  return used.pop();
319          },
320          transition: function( other, distance ) {
321                  var end = color( other ),
322                          spaceName = end._space(),
323                          space = spaces[ spaceName ],
324                          startColor = this.alpha() === 0 ? color( "transparent" ) : this,
325                          start = startColor[ space.cache ] || space.to( startColor._rgba ),
326                          result = start.slice();
327  
328                  end = end[ space.cache ];
329                  each( space.props, function( key, prop ) {
330                          var index = prop.idx,
331                                  startValue = start[ index ],
332                                  endValue = end[ index ],
333                                  type = propTypes[ prop.type ] || {};
334  
335                          // if null, don't override start value
336                          if ( endValue === null ) {
337                                  return;
338                          }
339                          // if null - use end
340                          if ( startValue === null ) {
341                                  result[ index ] = endValue;
342                          } else {
343                                  if ( type.mod ) {
344                                          if ( endValue - startValue > type.mod / 2 ) {
345                                                  startValue += type.mod;
346                                          } else if ( startValue - endValue > type.mod / 2 ) {
347                                                  startValue -= type.mod;
348                                          }
349                                  }
350                                  result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
351                          }
352                  });
353                  return this[ spaceName ]( result );
354          },
355          blend: function( opaque ) {
356                  // if we are already opaque - return ourself
357                  if ( this._rgba[ 3 ] === 1 ) {
358                          return this;
359                  }
360  
361                  var rgb = this._rgba.slice(),
362                          a = rgb.pop(),
363                          blend = color( opaque )._rgba;
364  
365                  return color( jQuery.map( rgb, function( v, i ) {
366                          return ( 1 - a ) * blend[ i ] + a * v;
367                  }));
368          },
369          toRgbaString: function() {
370                  var prefix = "rgba(",
371                          rgba = jQuery.map( this._rgba, function( v, i ) {
372                                  return v == null ? ( i > 2 ? 1 : 0 ) : v;
373                          });
374  
375                  if ( rgba[ 3 ] === 1 ) {
376                          rgba.pop();
377                          prefix = "rgb(";
378                  }
379  
380                  return prefix + rgba.join() + ")";
381          },
382          toHslaString: function() {
383                  var prefix = "hsla(",
384                          hsla = jQuery.map( this.hsla(), function( v, i ) {
385                                  if ( v == null ) {
386                                          v = i > 2 ? 1 : 0;
387                                  }
388  
389                                  // catch 1 and 2
390                                  if ( i && i < 3 ) {
391                                          v = Math.round( v * 100 ) + "%";
392                                  }
393                                  return v;
394                          });
395  
396                  if ( hsla[ 3 ] === 1 ) {
397                          hsla.pop();
398                          prefix = "hsl(";
399                  }
400                  return prefix + hsla.join() + ")";
401          },
402          toHexString: function( includeAlpha ) {
403                  var rgba = this._rgba.slice(),
404                          alpha = rgba.pop();
405  
406                  if ( includeAlpha ) {
407                          rgba.push( ~~( alpha * 255 ) );
408                  }
409  
410                  return "#" + jQuery.map( rgba, function( v, i ) {
411  
412                          // default to 0 when nulls exist
413                          v = ( v || 0 ).toString( 16 );
414                          return v.length === 1 ? "0" + v : v;
415                  }).join("");
416          },
417          toString: function() {
418                  return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
419          }
420  });
421  color.fn.parse.prototype = color.fn;
422  
423  // hsla conversions adapted from:
424  // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
425  
426  function hue2rgb( p, q, h ) {
427          h = ( h + 1 ) % 1;
428          if ( h * 6 < 1 ) {
429                  return p + (q - p) * h * 6;
430          }
431          if ( h * 2 < 1) {
432                  return q;
433          }
434          if ( h * 3 < 2 ) {
435                  return p + (q - p) * ((2/3) - h) * 6;
436          }
437          return p;
438  }
439  
440  spaces.hsla.to = function ( rgba ) {
441          if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
442                  return [ null, null, null, rgba[ 3 ] ];
443          }
444          var r = rgba[ 0 ] / 255,
445                  g = rgba[ 1 ] / 255,
446                  b = rgba[ 2 ] / 255,
447                  a = rgba[ 3 ],
448                  max = Math.max( r, g, b ),
449                  min = Math.min( r, g, b ),
450                  diff = max - min,
451                  add = max + min,
452                  l = add * 0.5,
453                  h, s;
454  
455          if ( min === max ) {
456                  h = 0;
457          } else if ( r === max ) {
458                  h = ( 60 * ( g - b ) / diff ) + 360;
459          } else if ( g === max ) {
460                  h = ( 60 * ( b - r ) / diff ) + 120;
461          } else {
462                  h = ( 60 * ( r - g ) / diff ) + 240;
463          }
464  
465          if ( l === 0 || l === 1 ) {
466                  s = l;
467          } else if ( l <= 0.5 ) {
468                  s = diff / add;
469          } else {
470                  s = diff / ( 2 - add );
471          }
472          return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
473  };
474  
475  spaces.hsla.from = function ( hsla ) {
476          if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
477                  return [ null, null, null, hsla[ 3 ] ];
478          }
479          var h = hsla[ 0 ] / 360,
480                  s = hsla[ 1 ],
481                  l = hsla[ 2 ],
482                  a = hsla[ 3 ],
483                  q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
484                  p = 2 * l - q,
485                  r, g, b;
486  
487          return [
488                  Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
489                  Math.round( hue2rgb( p, q, h ) * 255 ),
490                  Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
491                  a
492          ];
493  };
494  
495  
496  each( spaces, function( spaceName, space ) {
497          var props = space.props,
498                  cache = space.cache,
499                  to = space.to,
500                  from = space.from;
501  
502          // makes rgba() and hsla()
503          color.fn[ spaceName ] = function( value ) {
504  
505                  // generate a cache for this space if it doesn't exist
506                  if ( to && !this[ cache ] ) {
507                          this[ cache ] = to( this._rgba );
508                  }
509                  if ( value === undefined ) {
510                          return this[ cache ].slice();
511                  }
512  
513                  var ret,
514                          type = jQuery.type( value ),
515                          arr = ( type === "array" || type === "object" ) ? value : arguments,
516                          local = this[ cache ].slice();
517  
518                  each( props, function( key, prop ) {
519                          var val = arr[ type === "object" ? key : prop.idx ];
520                          if ( val == null ) {
521                                  val = local[ prop.idx ];
522                          }
523                          local[ prop.idx ] = clamp( val, prop );
524                  });
525  
526                  if ( from ) {
527                          ret = color( from( local ) );
528                          ret[ cache ] = local;
529                          return ret;
530                  } else {
531                          return color( local );
532                  }
533          };
534  
535          // makes red() green() blue() alpha() hue() saturation() lightness()
536          each( props, function( key, prop ) {
537                  // alpha is included in more than one space
538                  if ( color.fn[ key ] ) {
539                          return;
540                  }
541                  color.fn[ key ] = function( value ) {
542                          var vtype = jQuery.type( value ),
543                                  fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
544                                  local = this[ fn ](),
545                                  cur = local[ prop.idx ],
546                                  match;
547  
548                          if ( vtype === "undefined" ) {
549                                  return cur;
550                          }
551  
552                          if ( vtype === "function" ) {
553                                  value = value.call( this, cur );
554                                  vtype = jQuery.type( value );
555                          }
556                          if ( value == null && prop.empty ) {
557                                  return this;
558                          }
559                          if ( vtype === "string" ) {
560                                  match = rplusequals.exec( value );
561                                  if ( match ) {
562                                          value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
563                                  }
564                          }
565                          local[ prop.idx ] = value;
566                          return this[ fn ]( local );
567                  };
568          });
569  });
570  
571  // add cssHook and .fx.step function for each named hook.
572  // accept a space separated string of properties
573  color.hook = function( hook ) {
574          var hooks = hook.split( " " );
575          each( hooks, function( i, hook ) {
576                  jQuery.cssHooks[ hook ] = {
577                          set: function( elem, value ) {
578                                  var parsed, curElem,
579                                          backgroundColor = "";
580  
581                                  if ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) {
582                                          value = color( parsed || value );
583                                          if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
584                                                  curElem = hook === "backgroundColor" ? elem.parentNode : elem;
585                                                  while (
586                                                          (backgroundColor === "" || backgroundColor === "transparent") &&
587                                                          curElem && curElem.style
588                                                  ) {
589                                                          try {
590                                                                  backgroundColor = jQuery.css( curElem, "backgroundColor" );
591                                                                  curElem = curElem.parentNode;
592                                                          } catch ( e ) {
593                                                          }
594                                                  }
595  
596                                                  value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
597                                                          backgroundColor :
598                                                          "_default" );
599                                          }
600  
601                                          value = value.toRgbaString();
602                                  }
603                                  try {
604                                          elem.style[ hook ] = value;
605                                  } catch( value ) {
606                                          // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
607                                  }
608                          }
609                  };
610                  jQuery.fx.step[ hook ] = function( fx ) {
611                          if ( !fx.colorInit ) {
612                                  fx.start = color( fx.elem, hook );
613                                  fx.end = color( fx.end );
614                                  fx.colorInit = true;
615                          }
616                          jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
617                  };
618          });
619  
620  };
621  
622  color.hook( stepHooks );
623  
624  jQuery.cssHooks.borderColor = {
625          expand: function( value ) {
626                  var expanded = {};
627  
628                  each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
629                          expanded[ "border" + part + "Color" ] = value;
630                  });
631                  return expanded;
632          }
633  };
634  
635  // Basic color names only.
636  // Usage of any of the other color names requires adding yourself or including
637  // jquery.color.svg-names.js.
638  colors = jQuery.Color.names = {
639          // 4.1. Basic color keywords
640          aqua: "#00ffff",
641          black: "#000000",
642          blue: "#0000ff",
643          fuchsia: "#ff00ff",
644          gray: "#808080",
645          green: "#008000",
646          lime: "#00ff00",
647          maroon: "#800000",
648          navy: "#000080",
649          olive: "#808000",
650          purple: "#800080",
651          red: "#ff0000",
652          silver: "#c0c0c0",
653          teal: "#008080",
654          white: "#ffffff",
655          yellow: "#ffff00",
656  
657          // 4.2.3. ‘transparent’ color keyword
658          transparent: [ null, null, null, 0 ],
659  
660          _default: "#ffffff"
661  };
662  
663  })( jQuery );
664  
665  /*!
666   * jQuery Color Animations v2.1.0 - SVG Color Names
667   * http://jquery.org/
668   *
669   * Remaining HTML/CSS color names per W3C's CSS Color Module Level 3.
670   * http://www.w3.org/TR/css3-color/#svg-color
671   *
672   * Copyright 2012 jQuery Foundation and other contributors
673   * Released under the MIT license.
674   * http://jquery.org/license
675   *
676   * Date: Fri Aug 24 12:02:24 2012 -0500
677   */
678  jQuery.extend( jQuery.Color.names, {
679          // 4.3. Extended color keywords (minus the basic ones in core color plugin)
680          aliceblue: "#f0f8ff",
681          antiquewhite: "#faebd7",
682          aquamarine: "#7fffd4",
683          azure: "#f0ffff",
684          beige: "#f5f5dc",
685          bisque: "#ffe4c4",
686          blanchedalmond: "#ffebcd",
687          blueviolet: "#8a2be2",
688          brown: "#a52a2a",
689          burlywood: "#deb887",
690          cadetblue: "#5f9ea0",
691          chartreuse: "#7fff00",
692          chocolate: "#d2691e",
693          coral: "#ff7f50",
694          cornflowerblue: "#6495ed",
695          cornsilk: "#fff8dc",
696          crimson: "#dc143c",
697          cyan: "#00ffff",
698          darkblue: "#00008b",
699          darkcyan: "#008b8b",
700          darkgoldenrod: "#b8860b",
701          darkgray: "#a9a9a9",
702          darkgreen: "#006400",
703          darkgrey: "#a9a9a9",
704          darkkhaki: "#bdb76b",
705          darkmagenta: "#8b008b",
706          darkolivegreen: "#556b2f",
707          darkorange: "#ff8c00",
708          darkorchid: "#9932cc",
709          darkred: "#8b0000",
710          darksalmon: "#e9967a",
711          darkseagreen: "#8fbc8f",
712          darkslateblue: "#483d8b",
713          darkslategray: "#2f4f4f",
714          darkslategrey: "#2f4f4f",
715          darkturquoise: "#00ced1",
716          darkviolet: "#9400d3",
717          deeppink: "#ff1493",
718          deepskyblue: "#00bfff",
719          dimgray: "#696969",
720          dimgrey: "#696969",
721          dodgerblue: "#1e90ff",
722          firebrick: "#b22222",
723          floralwhite: "#fffaf0",
724          forestgreen: "#228b22",
725          gainsboro: "#dcdcdc",
726          ghostwhite: "#f8f8ff",
727          gold: "#ffd700",
728          goldenrod: "#daa520",
729          greenyellow: "#adff2f",
730          grey: "#808080",
731          honeydew: "#f0fff0",
732          hotpink: "#ff69b4",
733          indianred: "#cd5c5c",
734          indigo: "#4b0082",
735          ivory: "#fffff0",
736          khaki: "#f0e68c",
737          lavender: "#e6e6fa",
738          lavenderblush: "#fff0f5",
739          lawngreen: "#7cfc00",
740          lemonchiffon: "#fffacd",
741          lightblue: "#add8e6",
742          lightcoral: "#f08080",
743          lightcyan: "#e0ffff",
744          lightgoldenrodyellow: "#fafad2",
745          lightgray: "#d3d3d3",
746          lightgreen: "#90ee90",
747          lightgrey: "#d3d3d3",
748          lightpink: "#ffb6c1",
749          lightsalmon: "#ffa07a",
750          lightseagreen: "#20b2aa",
751          lightskyblue: "#87cefa",
752          lightslategray: "#778899",
753          lightslategrey: "#778899",
754          lightsteelblue: "#b0c4de",
755          lightyellow: "#ffffe0",
756          limegreen: "#32cd32",
757          linen: "#faf0e6",
758          mediumaquamarine: "#66cdaa",
759          mediumblue: "#0000cd",
760          mediumorchid: "#ba55d3",
761          mediumpurple: "#9370db",
762          mediumseagreen: "#3cb371",
763          mediumslateblue: "#7b68ee",
764          mediumspringgreen: "#00fa9a",
765          mediumturquoise: "#48d1cc",
766          mediumvioletred: "#c71585",
767          midnightblue: "#191970",
768          mintcream: "#f5fffa",
769          mistyrose: "#ffe4e1",
770          moccasin: "#ffe4b5",
771          navajowhite: "#ffdead",
772          oldlace: "#fdf5e6",
773          olivedrab: "#6b8e23",
774          orange: "#ffa500",
775          orangered: "#ff4500",
776          orchid: "#da70d6",
777          palegoldenrod: "#eee8aa",
778          palegreen: "#98fb98",
779          paleturquoise: "#afeeee",
780          palevioletred: "#db7093",
781          papayawhip: "#ffefd5",
782          peachpuff: "#ffdab9",
783          peru: "#cd853f",
784          pink: "#ffc0cb",
785          plum: "#dda0dd",
786          powderblue: "#b0e0e6",
787          rosybrown: "#bc8f8f",
788          royalblue: "#4169e1",
789          saddlebrown: "#8b4513",
790          salmon: "#fa8072",
791          sandybrown: "#f4a460",
792          seagreen: "#2e8b57",
793          seashell: "#fff5ee",
794          sienna: "#a0522d",
795          skyblue: "#87ceeb",
796          slateblue: "#6a5acd",
797          slategray: "#708090",
798          slategrey: "#708090",
799          snow: "#fffafa",
800          springgreen: "#00ff7f",
801          steelblue: "#4682b4",
802          tan: "#d2b48c",
803          thistle: "#d8bfd8",
804          tomato: "#ff6347",
805          turquoise: "#40e0d0",
806          violet: "#ee82ee",
807          wheat: "#f5deb3",
808          whitesmoke: "#f5f5f5",
809          yellowgreen: "#9acd32",
810  });
1 /*! 2 * jQuery Color Animations v2.1.0 3 * http://jquery.com/ 4 * 5 * Copyright 2012 jQuery Foundation and other contributors 6 * Released under the MIT license. 7 * http://jquery.org/license 8 * 9 * Date: Fri Aug 24 12:02:24 2012 -0500 10 */ 11 (function( jQuery, undefined ) { 12 13 var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", 14 15 // plusequals test for += 100 -= 100 16 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, 17 // a set of RE's that can match strings and generate color tuples. 18 stringParsers = [{ 19 re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, 20 parse: function( execResult ) { 21 return [ 22 execResult[ 1 ], 23 execResult[ 2 ], 24 execResult[ 3 ], 25 execResult[ 4 ] 26 ]; 27 } 28 }, { 29 re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, 30 parse: function( execResult ) { 31 return [ 32 execResult[ 1 ] * 2.55, 33 execResult[ 2 ] * 2.55, 34 execResult[ 3 ] * 2.55, 35 execResult[ 4 ] 36 ]; 37 } 38 }, { 39 // this regex ignores A-F because it's compared against an already lowercased string 40 re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, 41 parse: function( execResult ) { 42 return [ 43 parseInt( execResult[ 1 ], 16 ), 44 parseInt( execResult[ 2 ], 16 ), 45 parseInt( execResult[ 3 ], 16 ) 46 ]; 47 } 48 }, { 49 // this regex ignores A-F because it's compared against an already lowercased string 50 re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, 51 parse: function( execResult ) { 52 return [ 53 parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), 54 parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), 55 parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) 56 ]; 57 } 58 }, { 59 re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, 60 space: "hsla", 61 parse: function( execResult ) { 62 return [ 63 execResult[ 1 ], 64 execResult[ 2 ] / 100, 65 execResult[ 3 ] / 100, 66 execResult[ 4 ] 67 ]; 68 } 69 }], 70 71 // jQuery.Color( ) 72 color = jQuery.Color = function( color, green, blue, alpha ) { 73 return new jQuery.Color.fn.parse( color, green, blue, alpha ); 74 }, 75 spaces = { 76 rgba: { 77 props: { 78 red: { 79 idx: 0, 80 type: "byte" 81 }, 82 green: { 83 idx: 1, 84 type: "byte" 85 }, 86 blue: { 87 idx: 2, 88 type: "byte" 89 } 90 } 91 }, 92 93 hsla: { 94 props: { 95 hue: { 96 idx: 0, 97 type: "degrees" 98 }, 99 saturation: { 100 idx: 1, 101 type: "percent" 102 }, 103 lightness: { 104 idx: 2, 105 type: "percent" 106 } 107 } 108 } 109 }, 110 propTypes = { 111 "byte": { 112 floor: true, 113 max: 255 114 }, 115 "percent": { 116 max: 1 117 }, 118 "degrees": { 119 mod: 360, 120 floor: true 121 } 122 }, 123 support = color.support = {}, 124 125 // element for support tests 126 supportElem = jQuery( "<p>" )[ 0 ], 127 128 // colors = jQuery.Color.names 129 colors, 130 131 // local aliases of functions called often 132 each = jQuery.each; 133 134 // determine rgba support immediately 135 supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; 136 support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; 137 138 // define cache name and alpha properties 139 // for rgba and hsla spaces 140 each( spaces, function( spaceName, space ) { 141 space.cache = "_" + spaceName; 142 space.props.alpha = { 143 idx: 3, 144 type: "percent", 145 def: 1 146 }; 147 }); 148 149 function clamp( value, prop, allowEmpty ) { 150 var type = propTypes[ prop.type ] || {}; 151 152 if ( value == null ) { 153 return (allowEmpty || !prop.def) ? null : prop.def; 154 } 155 156 // ~~ is an short way of doing floor for positive numbers 157 value = type.floor ? ~~value : parseFloat( value ); 158 159 // IE will pass in empty strings as value for alpha, 160 // which will hit this case 161 if ( isNaN( value ) ) { 162 return prop.def; 163 } 164 165 if ( type.mod ) { 166 // we add mod before modding to make sure that negatives values 167 // get converted properly: -10 -> 350 168 return (value + type.mod) % type.mod; 169 } 170 171 // for now all property types without mod have min and max 172 return 0 > value ? 0 : type.max < value ? type.max : value; 173 } 174 175 function stringParse( string ) { 176 var inst = color(), 177 rgba = inst._rgba = []; 178 179 string = string.toLowerCase(); 180 181 each( stringParsers, function( i, parser ) { 182 var parsed, 183 match = parser.re.exec( string ), 184 values = match && parser.parse( match ), 185 spaceName = parser.space || "rgba"; 186 187 if ( values ) { 188 parsed = inst[ spaceName ]( values ); 189 190 // if this was an rgba parse the assignment might happen twice 191 // oh well.... 192 inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; 193 rgba = inst._rgba = parsed._rgba; 194 195 // exit each( stringParsers ) here because we matched 196 return false; 197 } 198 }); 199 200 // Found a stringParser that handled it 201 if ( rgba.length ) { 202 203 // if this came from a parsed string, force "transparent" when alpha is 0 204 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) 205 if ( rgba.join() === "0,0,0,0" ) { 206 jQuery.extend( rgba, colors.transparent ); 207 } 208 return inst; 209 } 210 211 // named colors 212 return colors[ string ]; 213 } 214 215 color.fn = jQuery.extend( color.prototype, { 216 parse: function( red, green, blue, alpha ) { 217 if ( red === undefined ) { 218 this._rgba = [ null, null, null, null ]; 219 return this; 220 } 221 if ( red.jquery || red.nodeType ) { 222 red = jQuery( red ).css( green ); 223 green = undefined; 224 } 225 226 var inst = this, 227 type = jQuery.type( red ), 228 rgba = this._rgba = [], 229 source; 230 231 // more than 1 argument specified - assume ( red, green, blue, alpha ) 232 if ( green !== undefined ) { 233 red = [ red, green, blue, alpha ]; 234 type = "array"; 235 } 236 237 if ( type === "string" ) { 238 return this.parse( stringParse( red ) || colors._default ); 239 } 240 241 if ( type === "array" ) { 242 each( spaces.rgba.props, function( key, prop ) { 243 rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); 244 }); 245 return this; 246 } 247 248 if ( type === "object" ) { 249 if ( red instanceof color ) { 250 each( spaces, function( spaceName, space ) { 251 if ( red[ space.cache ] ) { 252 inst[ space.cache ] = red[ space.cache ].slice(); 253 } 254 }); 255 } else { 256 each( spaces, function( spaceName, space ) { 257 var cache = space.cache; 258 each( space.props, function( key, prop ) { 259 260 // if the cache doesn't exist, and we know how to convert 261 if ( !inst[ cache ] && space.to ) { 262 263 // if the value was null, we don't need to copy it 264 // if the key was alpha, we don't need to copy it either 265 if ( key === "alpha" || red[ key ] == null ) { 266 return; 267 } 268 inst[ cache ] = space.to( inst._rgba ); 269 } 270 271 // this is the only case where we allow nulls for ALL properties. 272 // call clamp with alwaysAllowEmpty 273 inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); 274 }); 275 276 // everything defined but alpha? 277 if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { 278 // use the default of 1 279 inst[ cache ][ 3 ] = 1; 280 if ( space.from ) { 281 inst._rgba = space.from( inst[ cache ] ); 282 } 283 } 284 }); 285 } 286 return this; 287 } 288 }, 289 is: function( compare ) { 290 var is = color( compare ), 291 same = true, 292 inst = this; 293 294 each( spaces, function( _, space ) { 295 var localCache, 296 isCache = is[ space.cache ]; 297 if (isCache) { 298 localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; 299 each( space.props, function( _, prop ) { 300 if ( isCache[ prop.idx ] != null ) { 301 same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); 302 return same; 303 } 304 }); 305 } 306 return same; 307 }); 308 return same; 309 }, 310 _space: function() { 311 var used = [], 312 inst = this; 313 each( spaces, function( spaceName, space ) { 314 if ( inst[ space.cache ] ) { 315 used.push( spaceName ); 316 } 317 }); 318 return used.pop(); 319 }, 320 transition: function( other, distance ) { 321 var end = color( other ), 322 spaceName = end._space(), 323 space = spaces[ spaceName ], 324 startColor = this.alpha() === 0 ? color( "transparent" ) : this, 325 start = startColor[ space.cache ] || space.to( startColor._rgba ), 326 result = start.slice(); 327 328 end = end[ space.cache ]; 329 each( space.props, function( key, prop ) { 330 var index = prop.idx, 331 startValue = start[ index ], 332 endValue = end[ index ], 333 type = propTypes[ prop.type ] || {}; 334 335 // if null, don't override start value 336 if ( endValue === null ) { 337 return; 338 } 339 // if null - use end 340 if ( startValue === null ) { 341 result[ index ] = endValue; 342 } else { 343 if ( type.mod ) { 344 if ( endValue - startValue > type.mod / 2 ) { 345 startValue += type.mod; 346 } else if ( startValue - endValue > type.mod / 2 ) { 347 startValue -= type.mod; 348 } 349 } 350 result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); 351 } 352 }); 353 return this[ spaceName ]( result ); 354 }, 355 blend: function( opaque ) { 356 // if we are already opaque - return ourself 357 if ( this._rgba[ 3 ] === 1 ) { 358 return this; 359 } 360 361 var rgb = this._rgba.slice(), 362 a = rgb.pop(), 363 blend = color( opaque )._rgba; 364 365 return color( jQuery.map( rgb, function( v, i ) { 366 return ( 1 - a ) * blend[ i ] + a * v; 367 })); 368 }, 369 toRgbaString: function() { 370 var prefix = "rgba(", 371 rgba = jQuery.map( this._rgba, function( v, i ) { 372 return v == null ? ( i > 2 ? 1 : 0 ) : v; 373 }); 374 375 if ( rgba[ 3 ] === 1 ) { 376 rgba.pop(); 377 prefix = "rgb("; 378 } 379 380 return prefix + rgba.join() + ")"; 381 }, 382 toHslaString: function() { 383 var prefix = "hsla(", 384 hsla = jQuery.map( this.hsla(), function( v, i ) { 385 if ( v == null ) { 386 v = i > 2 ? 1 : 0; 387 } 388 389 // catch 1 and 2 390 if ( i && i < 3 ) { 391 v = Math.round( v * 100 ) + "%"; 392 } 393 return v; 394 }); 395 396 if ( hsla[ 3 ] === 1 ) { 397 hsla.pop(); 398 prefix = "hsl("; 399 } 400 return prefix + hsla.join() + ")"; 401 }, 402 toHexString: function( includeAlpha ) { 403 var rgba = this._rgba.slice(), 404 alpha = rgba.pop(); 405 406 if ( includeAlpha ) { 407 rgba.push( ~~( alpha * 255 ) ); 408 } 409 410 return "#" + jQuery.map( rgba, function( v, i ) { 411 412 // default to 0 when nulls exist 413 v = ( v || 0 ).toString( 16 ); 414 return v.length === 1 ? "0" + v : v; 415 }).join(""); 416 }, 417 toString: function() { 418 return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); 419 } 420 }); 421 color.fn.parse.prototype = color.fn; 422 423 // hsla conversions adapted from: 424 // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 425 426 function hue2rgb( p, q, h ) { 427 h = ( h + 1 ) % 1; 428 if ( h * 6 < 1 ) { 429 return p + (q - p) * h * 6; 430 } 431 if ( h * 2 < 1) { 432 return q; 433 } 434 if ( h * 3 < 2 ) { 435 return p + (q - p) * ((2/3) - h) * 6; 436 } 437 return p; 438 } 439 440 spaces.hsla.to = function ( rgba ) { 441 if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { 442 return [ null, null, null, rgba[ 3 ] ]; 443 } 444 var r = rgba[ 0 ] / 255, 445 g = rgba[ 1 ] / 255, 446 b = rgba[ 2 ] / 255, 447 a = rgba[ 3 ], 448 max = Math.max( r, g, b ), 449 min = Math.min( r, g, b ), 450 diff = max - min, 451 add = max + min, 452 l = add * 0.5, 453 h, s; 454 455 if ( min === max ) { 456 h = 0; 457 } else if ( r === max ) { 458 h = ( 60 * ( g - b ) / diff ) + 360; 459 } else if ( g === max ) { 460 h = ( 60 * ( b - r ) / diff ) + 120; 461 } else { 462 h = ( 60 * ( r - g ) / diff ) + 240; 463 } 464 465 if ( l === 0 || l === 1 ) { 466 s = l; 467 } else if ( l <= 0.5 ) { 468 s = diff / add; 469 } else { 470 s = diff / ( 2 - add ); 471 } 472 return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; 473 }; 474 475 spaces.hsla.from = function ( hsla ) { 476 if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { 477 return [ null, null, null, hsla[ 3 ] ]; 478 } 479 var h = hsla[ 0 ] / 360, 480 s = hsla[ 1 ], 481 l = hsla[ 2 ], 482 a = hsla[ 3 ], 483 q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, 484 p = 2 * l - q, 485 r, g, b; 486 487 return [ 488 Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), 489 Math.round( hue2rgb( p, q, h ) * 255 ), 490 Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), 491 a 492 ]; 493 }; 494 495 496 each( spaces, function( spaceName, space ) { 497 var props = space.props, 498 cache = space.cache, 499 to = space.to, 500 from = space.from; 501 502 // makes rgba() and hsla() 503 color.fn[ spaceName ] = function( value ) { 504 505 // generate a cache for this space if it doesn't exist 506 if ( to && !this[ cache ] ) { 507 this[ cache ] = to( this._rgba ); 508 } 509 if ( value === undefined ) { 510 return this[ cache ].slice(); 511 } 512 513 var ret, 514 type = jQuery.type( value ), 515 arr = ( type === "array" || type === "object" ) ? value : arguments, 516 local = this[ cache ].slice(); 517 518 each( props, function( key, prop ) { 519 var val = arr[ type === "object" ? key : prop.idx ]; 520 if ( val == null ) { 521 val = local[ prop.idx ]; 522 } 523 local[ prop.idx ] = clamp( val, prop ); 524 }); 525 526 if ( from ) { 527 ret = color( from( local ) ); 528 ret[ cache ] = local; 529 return ret; 530 } else { 531 return color( local ); 532 } 533 }; 534 535 // makes red() green() blue() alpha() hue() saturation() lightness() 536 each( props, function( key, prop ) { 537 // alpha is included in more than one space 538 if ( color.fn[ key ] ) { 539 return; 540 } 541 color.fn[ key ] = function( value ) { 542 var vtype = jQuery.type( value ), 543 fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), 544 local = this[ fn ](), 545 cur = local[ prop.idx ], 546 match; 547 548 if ( vtype === "undefined" ) { 549 return cur; 550 } 551 552 if ( vtype === "function" ) { 553 value = value.call( this, cur ); 554 vtype = jQuery.type( value ); 555 } 556 if ( value == null && prop.empty ) { 557 return this; 558 } 559 if ( vtype === "string" ) { 560 match = rplusequals.exec( value ); 561 if ( match ) { 562 value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); 563 } 564 } 565 local[ prop.idx ] = value; 566 return this[ fn ]( local ); 567 }; 568 }); 569 }); 570 571 // add cssHook and .fx.step function for each named hook. 572 // accept a space separated string of properties 573 color.hook = function( hook ) { 574 var hooks = hook.split( " " ); 575 each( hooks, function( i, hook ) { 576 jQuery.cssHooks[ hook ] = { 577 set: function( elem, value ) { 578 var parsed, curElem, 579 backgroundColor = ""; 580 581 if ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) { 582 value = color( parsed || value ); 583 if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { 584 curElem = hook === "backgroundColor" ? elem.parentNode : elem; 585 while ( 586 (backgroundColor === "" || backgroundColor === "transparent") && 587 curElem && curElem.style 588 ) { 589 try { 590 backgroundColor = jQuery.css( curElem, "backgroundColor" ); 591 curElem = curElem.parentNode; 592 } catch ( e ) { 593 } 594 } 595 596 value = value.blend( backgroundColor && backgroundColor !== "transparent" ? 597 backgroundColor : 598 "_default" ); 599 } 600 601 value = value.toRgbaString(); 602 } 603 try { 604 elem.style[ hook ] = value; 605 } catch( value ) { 606 // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' 607 } 608 } 609 }; 610 jQuery.fx.step[ hook ] = function( fx ) { 611 if ( !fx.colorInit ) { 612 fx.start = color( fx.elem, hook ); 613 fx.end = color( fx.end ); 614 fx.colorInit = true; 615 } 616 jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); 617 }; 618 }); 619 620 }; 621 622 color.hook( stepHooks ); 623 624 jQuery.cssHooks.borderColor = { 625 expand: function( value ) { 626 var expanded = {}; 627 628 each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { 629 expanded[ "border" + part + "Color" ] = value; 630 }); 631 return expanded; 632 } 633 }; 634 635 // Basic color names only. 636 // Usage of any of the other color names requires adding yourself or including 637 // jquery.color.svg-names.js. 638 colors = jQuery.Color.names = { 639 // 4.1. Basic color keywords 640 aqua: "#00ffff", 641 black: "#000000", 642 blue: "#0000ff", 643 fuchsia: "#ff00ff", 644 gray: "#808080", 645 green: "#008000", 646 lime: "#00ff00", 647 maroon: "#800000", 648 navy: "#000080", 649 olive: "#808000", 650 purple: "#800080", 651 red: "#ff0000", 652 silver: "#c0c0c0", 653 teal: "#008080", 654 white: "#ffffff", 655 yellow: "#ffff00", 656 657 // 4.2.3. ‘transparent’ color keyword 658 transparent: [ null, null, null, 0 ], 659 660 _default: "#ffffff" 661 }; 662 663 })( jQuery ); 664 665 /*! 666 * jQuery Color Animations v2.1.0 - SVG Color Names 667 * http://jquery.org/ 668 * 669 * Remaining HTML/CSS color names per W3C's CSS Color Module Level 3. 670 * http://www.w3.org/TR/css3-color/#svg-color 671 * 672 * Copyright 2012 jQuery Foundation and other contributors 673 * Released under the MIT license. 674 * http://jquery.org/license 675 * 676 * Date: Fri Aug 24 12:02:24 2012 -0500 677 */ 678 jQuery.extend( jQuery.Color.names, { 679 // 4.3. Extended color keywords (minus the basic ones in core color plugin) 680 aliceblue: "#f0f8ff", 681 antiquewhite: "#faebd7", 682 aquamarine: "#7fffd4", 683 azure: "#f0ffff", 684 beige: "#f5f5dc", 685 bisque: "#ffe4c4", 686 blanchedalmond: "#ffebcd", 687 blueviolet: "#8a2be2", 688 brown: "#a52a2a", 689 burlywood: "#deb887", 690 cadetblue: "#5f9ea0", 691 chartreuse: "#7fff00", 692 chocolate: "#d2691e", 693 coral: "#ff7f50", 694 cornflowerblue: "#6495ed", 695 cornsilk: "#fff8dc", 696 crimson: "#dc143c", 697 cyan: "#00ffff", 698 darkblue: "#00008b", 699 darkcyan: "#008b8b", 700 darkgoldenrod: "#b8860b", 701 darkgray: "#a9a9a9", 702 darkgreen: "#006400", 703 darkgrey: "#a9a9a9", 704 darkkhaki: "#bdb76b", 705 darkmagenta: "#8b008b", 706 darkolivegreen: "#556b2f", 707 darkorange: "#ff8c00", 708 darkorchid: "#9932cc", 709 darkred: "#8b0000", 710 darksalmon: "#e9967a", 711 darkseagreen: "#8fbc8f", 712 darkslateblue: "#483d8b", 713 darkslategray: "#2f4f4f", 714 darkslategrey: "#2f4f4f", 715 darkturquoise: "#00ced1", 716 darkviolet: "#9400d3", 717 deeppink: "#ff1493", 718 deepskyblue: "#00bfff", 719 dimgray: "#696969", 720 dimgrey: "#696969", 721 dodgerblue: "#1e90ff", 722 firebrick: "#b22222", 723 floralwhite: "#fffaf0", 724 forestgreen: "#228b22", 725 gainsboro: "#dcdcdc", 726 ghostwhite: "#f8f8ff", 727 gold: "#ffd700", 728 goldenrod: "#daa520", 729 greenyellow: "#adff2f", 730 grey: "#808080", 731 honeydew: "#f0fff0", 732 hotpink: "#ff69b4", 733 indianred: "#cd5c5c", 734 indigo: "#4b0082", 735 ivory: "#fffff0", 736 khaki: "#f0e68c", 737 lavender: "#e6e6fa", 738 lavenderblush: "#fff0f5", 739 lawngreen: "#7cfc00", 740 lemonchiffon: "#fffacd", 741 lightblue: "#add8e6", 742 lightcoral: "#f08080", 743 lightcyan: "#e0ffff", 744 lightgoldenrodyellow: "#fafad2", 745 lightgray: "#d3d3d3", 746 lightgreen: "#90ee90", 747 lightgrey: "#d3d3d3", 748 lightpink: "#ffb6c1", 749 lightsalmon: "#ffa07a", 750 lightseagreen: "#20b2aa", 751 lightskyblue: "#87cefa", 752 lightslategray: "#778899", 753 lightslategrey: "#778899", 754 lightsteelblue: "#b0c4de", 755 lightyellow: "#ffffe0", 756 limegreen: "#32cd32", 757 linen: "#faf0e6", 758 mediumaquamarine: "#66cdaa", 759 mediumblue: "#0000cd", 760 mediumorchid: "#ba55d3", 761 mediumpurple: "#9370db", 762 mediumseagreen: "#3cb371", 763 mediumslateblue: "#7b68ee", 764 mediumspringgreen: "#00fa9a", 765 mediumturquoise: "#48d1cc", 766 mediumvioletred: "#c71585", 767 midnightblue: "#191970", 768 mintcream: "#f5fffa", 769 mistyrose: "#ffe4e1", 770 moccasin: "#ffe4b5", 771 navajowhite: "#ffdead", 772 oldlace: "#fdf5e6", 773 olivedrab: "#6b8e23", 774 orange: "#ffa500", 775 orangered: "#ff4500", 776 orchid: "#da70d6", 777 palegoldenrod: "#eee8aa", 778 palegreen: "#98fb98", 779 paleturquoise: "#afeeee", 780 palevioletred: "#db7093", 781 papayawhip: "#ffefd5", 782 peachpuff: "#ffdab9", 783 peru: "#cd853f", 784 pink: "#ffc0cb", 785 plum: "#dda0dd", 786 powderblue: "#b0e0e6", 787 rosybrown: "#bc8f8f", 788 royalblue: "#4169e1", 789 saddlebrown: "#8b4513", 790 salmon: "#fa8072", 791 sandybrown: "#f4a460", 792 seagreen: "#2e8b57", 793 seashell: "#fff5ee", 794 sienna: "#a0522d", 795 skyblue: "#87ceeb", 796 slateblue: "#6a5acd", 797 slategray: "#708090", 798 slategrey: "#708090", 799 snow: "#fffafa", 800 springgreen: "#00ff7f", 801 steelblue: "#4682b4", 802 tan: "#d2b48c", 803 thistle: "#d8bfd8", 804 tomato: "#ff6347", 805 turquoise: "#40e0d0", 806 violet: "#ee82ee", 807 wheat: "#f5deb3", 808 whitesmoke: "#f5f5f5", 809 yellowgreen: "#9acd32", 810 });

联系我们
文章看不懂?联系我们为您免费解答!免费助力个人,小企站点!
电话:020-2206-9892
QQ咨询:1025174874
邮件:info@361sale.com
工作时间:周一至周五,9:30-18:30,节假日休息
© 转载声明
本文作者:Harry
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容