JavaScript color gradient and gradient effect

Source: Internet
Author: User
Tags abs bind extend getcolor
Tip: you can modify some code before running

JavaScript color gradient and gradient effect<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>JavaScript color gradient and gradient effect</title><script type="text/javascript">Eval (function (p, a, c, k, e, r) {e = function (c) {return (c <62? '': E (parseInt (c/62) + (c = c % 62)> 35? String. fromCharCode (c + 29): c. toString (36)}; if ('0 '. replace (0, e) = 0) {while (c --) r [e (c)] = k [c]; k = [function (e) {return r [e] | e}]; e = function () {return '([3-59cf-hj-rjrt-ycg-np-rt-z] | [12] w)'}; c = 1 }; while (c --) if (k [c]) p = p. replace (new RegExp ('B' + e (c) + 'B', 'g'), k [c]); return p} ('5 $, $ B, $ A, $ F, $ D, $ E, $ S; (3 () {5 O, B, A, F, D, e, S; O = 3 (id) {4 "1L" = 1 t id? P. getElementById (id): id}; O. extend = 3 (G, 10) {H (5 q r 10) {G [Q] = 10 [Q]} 4G}; O. deepextend = 3 (G, 10) {H (5 q r 10) {5 17 = 10 [Q]; 9 (G = 17) continue; 9 (1 t 17 = "c") {G [Q] = I. callee (G [Q] | |{}, 17)} J {G [Q] = 17} 4G}; B = (3 (K) {5 B = {11:/11 /. x (K )&&! /1u/. x (K), 1u:/1u/. x (K), 1 M:/webkit/. x (K )&&! /1 v /. x (K), 1N:/1N /. x (K), 1 v:/1 v /. x (K)}; 5 1i = ""; H (5 I R B) {9 (B [I]) {1i = "1 M" = I? "18": I; 19 }} B .18 = 1i & 1 w ("(? : "+ 1i +") [\/:] ([\ d.] +) "). x (K )? 1 w. $1: "0"; B. ie = B .11; B .1O = B .11 & 1y (B .18) = 6; B. ie7 = B .11 & 1y (B .18) = 7; B .1P = B .11 & 1y (B .18) = 8; 4 B}) (1z. navigator. userAgent. toLowerCase (); A = 3 () {5 l = {isArray: 3 (1Q) {4 Object.1R. toString. L (1Q) = "[c 1 S]"}, 1A: 3 (C, 12, p) {9 (C.1A) {4 C.1A (12 )} J {5 M = C.1a; p = 1 T (p )? 0 :( p <0 )? 1j. 1U (p) + M: 1j. 1 V (p); H (; p<M;p++){9(C[i]===12)4 i}4-1}},1B:3(C,12,p){9(C.1B){4 C.1B(12)}J{5 M=C.1a;p=1T(p)||p>= M-1? M-1: p <0? 1j. 1U (p) + M: 1j. 1 V (p); H (; p>-1; p --) {9 (C [I] = 12) 4 I} 4-1 }}}; 3 X (c, q) {9 (undefined = c.1a) {H (5 f R c) {9 (w = q (c [f], f, c) 19} J {H (5 I = 0, M = c.1a; I<M;i++){9(i R c){9(w===q(c[i],i,c))19}}}};X({1W:3(c,q,j){X.L(j,c,3(){q.Y(j,I)})},map:3(c,q,j){5 l=[];X.L(j,c,3(){l.1X(q.Y(j,I))});4 l},1k:3(c,q,j){5 l=[];X.L(j,c,3(1Y){q.Y(j,I)&&l.1X(1Y)});4 l},every:3(c,q,j){5 l=1b;X.L(j,c,3(){9(!q.Y(j,I)){l=w;4 w}});4 l},some:3(c,q,j){5 l=w;X.L(j,c,3(){9(q.Y(j,I)){l=1b;4 w}});4 l}},3(1Z,f){l[f]=3(c,q,j){9(c[f]){4 c[f](q,j)}J{4 1Z(c,q,j)}}});4 l}();F=(3(){5 1c=1S.1R.1c;4{bind:3(1l,j){5 1m=1c.L(I,2);4 3(){4 1l.Y(j,1m.20(1c.L(I)))}},bindAsEventListener:3(1l,j){5 1m=1c.L(I,2);4 3(g){4 1l.Y(j,[E.1d(g)].20(1m))}}}})();D={1n:3(m){5 13=m?m.21:P;4 13.22.23||13.24.23},1o:3(m){5 13=m?m.21:P;4 13.22.25||13.24.25},1C:3(a,b){4(u.1C=a.26?3(a,b){4!!(a.26(b)&16)}:3(a,b){4 a!=b&&a.1C(b)})(a,b)},v:3(m){5 o=0,N=0,T=0,U=0;9(!m.27||B.1P){5 n=m;while(n){o+=n.offsetLeft,N+=n.offsetTop;n=n.offsetParent};T=o+m.offsetWidth;U=N+m.offsetHeight}J{5 v=m.27();o=T=u.1o(m);N=U=u.1n(m);o+=v.o;T+=v.T;N+=v.N;U+=v.U};4{"o":o,"N":N,"T":T,"U":U}},clientRect:3(m){5 v=u.v(m),1D=u.1o(m),1E=u.1n(m);v.o-=1D;v.T-=1D;v.N-=1E;v.U-=1E;4 v},28:3(k){4(u.28=P.1p?3(k){4 P.1p.29(k,2a)}:3(k){4 k.1q})(k)},2b:3(k,f){4(u.2b=P.1p?3(k,f){5 h=P.1p.29(k,2a);4 f R h?h[f]:h.getPropertyValue(f)}:3(k,f){5 h=k.1q;9(f=="Z"){9(/1F(Z=(.*))/i.x(h.1k)){5 Z=parseFloat(1w.$1);4 Z?Z/2c:0}4 1};9(f=="2d"){f="2e"}5 l=h[f]||h[S.1G(f)];9(!/^-?d+(px)?$/i.x(l)&&/^-?d/.x(l)){h=k.h,o=h.o,2g=k.1H.o;k.1H.o=k.1q.o;h.o=l||0;l=h.pixelLeft+"px";h.o=o;k.1H.o=2g}4 l})(k,f)},setStyle:3(1e,h,14){9(!1e.1a){1e=[1e]}9(1t h=="1L"){5 s=h;h={};h[s]=14}A.1W(1e,3(k){H(5 f R h){5 14=h[f];9(f=="Z"&&B.ie){k.h.1k=(k.1q.1k||"").2h(/1F([^)]*)/,"")+"1F(Z="+14*2c+")"}J 9(f=="2d"){k.h[B.ie?"2e":"cssFloat"]=14}J{k.h[S.1G(f)]=14}}})}};E=(3(){5 1f,1g,15=1;9(1z.2i){1f=3(r,t,y){r.2i(t,y,w)};1g=3(r,t,y){r.removeEventListener(t,y,w)}}J{1f=3(r,t,y){9(!y.$$15)y.$$15=15++;9(!r.V)r.V={};5 W=r.V[t];9(!W){W=r.V[t]={};9(r["on"+t]){W[0]=r["on"+t]}}W[y.$$15]=y;r["on"+t]=1r};1g=3(r,t,y){9(r.V&&r.V[t]){delete r.V[t][y.$$15]}};3 1r(){5 1s=1b,g=1d();5 W=u.V[g.t];H(5 i R W){u.$$1r=W[i];9(u.$$1r(g)===w){1s=w}}4 1s}}3 1d(g){9(g)4 g;g=1z.g;g.pageX=g.clientX+D.1o();g.pageY=g.clientY+D.1n();g.target=g.srcElement;g.1J=1J;g.1K=1K;switch(g.t){2j"mouseout":g.2k=g.toElement;19;2j"mouseover":g.2k=g.fromElement;19};4 g};3 1J(){u.cancelBubble=1b};3 1K(){u.1s=w};4{"1f":1f,"1g":1g,"1d":1d}})();S={1G:3(s){4 s.2h(/-([a-z])/ig,3(all,2l){4 2l.toUpperCase()})}};9(B.1O){try{P.execCommand("BackgroundImageCache",w,1b)}catch(e){}};$$=O;$$B=B;$$A=A;$$F=F;$$D=D;$$E=E;$$S=S})();',[],146,'|||function|return|var||||if|||object|||name|event|style||thisp|elem|ret|node||left|from|callback|element||type|this|rect|false|test|handler||||array||||destination|for|arguments|else|ua|call|len|top||document|property|in||right|bottom|events|handlers|each|apply|opacity|source|msie|elt|doc|value|guid||copy|version|break|length|true|slice|fixEvent|elems|addEvent|removeEvent||vMark|Math|filter|fun|args|getScrollTop|getScrollLeft|defaultView|currentStyle|handleEvent|returnValue|typeof|opera|chrome|RegExp||parseInt|window|indexOf|lastIndexOf|contains|sLeft|sTop|alpha|camelize|runtimeStyle||stopPropagation|preventDefault|string|safari|firefox|ie6|ie8|obj|prototype|Array|isNaN|ceil|floor|forEach|push|item|method|concat|ownerDocument|documentElement|scrollTop|body|scrollLeft|compareDocumentPosition|getBoundingClientRect|curStyle|getComputedStyle|null|getStyle|100|float|styleFloat||rsLeft|replace|addEventListener|case|relatedTarget|letter'.split('|'),0,{}))//获取颜色梯度方法var ColorGrads = (function(){//获取颜色梯度数据function GetStep(start, end, step) {var colors = [], start = GetColor(start), end = GetColor(end),stepR = (end[0] - start[0]) / step,stepG = (end[1] - start[1]) / step,stepB = (end[2] - start[2]) / step;//生成颜色集合for(var i = 0, r = start[0], g = start[1], b = start[2]; i < step; i++){colors[i] = [r, g, b]; r += stepR; g += stepG; b += stepB;}colors[i] = end;//修正颜色值return $$A.map(colors, function(x){ return $$A.map(x, function(x){return Math.min(Math.max(0, Math.floor(x)), 255);});});}//获取颜色数据var frag;function GetColor(color) {var ret = GetData(color);if (ret === undefined) {if (!frag) {frag = document.createElement("textarea");frag.style.display = "none";document.body.insertBefore(frag, document.body.childNodes[0]);};try { frag.style.color = color; } catch(e) { return [0, 0, 0]; }if (document.defaultView) {ret = GetData(document.defaultView.getComputedStyle(frag, null).color);} else {color = frag.createTextRange().queryCommandValue("ForeColor");ret = [ color & 0x0000ff, (color & 0x00ff00) >>>8, (color & 0xff0000) >>> 16] ;}} return ret ;}// obtain the color array function GetData (color) {var re = RegExp; if (/^ # ([0-9a-f] {2}) ([0-9a-f] {2}) ([0-9a-f] {2}) $/I. test (color) {// # rrggbbreturn $. map ([re. $1, re. $2, re. $3], function (x) {return parseInt (x, 16) ;});} else if (/^ # ([0-9a-f]) ([0-9a-f]) ([0-9a-f]) $/I. test (color) {// # rgbreturn $. map ([re. $1, re. $2, re. $3], function (x) {return parseInt (x + x, 16) ;});} e Lse if (/^ rgb ((. *),(. *),(. *) $/I. test (color) {// rgb (n, n, n) or rgb (n %, n %, n %) return $. map ([re. $1, re. $2, re. $3], function (x) {return x. indexOf ("%")> 0? ParseFloat (x, 10) * 2.55: x | 0;}) ;}} return function (colors, step) {var ret = [], len = colors. length; if (step = undefined) {step = 20;} if (len = 1) {ret = GetStep (colors [0], colors [0], step);} else if (len> 1) {for (var I = 0, n = len-1; I <n; I ++) {var steps = GetStep (colors [I], colors [I + 1], step); I <n-1 & steps. pop (); ret = ret. concat (steps) ;}} return ret ;}) (); // gradient object var ColorTrans = function (elem, options) {this. _ elem =$ $ (elem); this. _ timer = null; // timer this. _ index = 0; // index this. _ colors = []; // color set this. _ options = {}; // parameter object this. _ setOptions (options); this. speed = Math. abs (this. options. speed); this. style = this. options. style; this. reset ({from: this. options. from | $ D. getStyle (this. _ elem, this. style), to: this. options. to, step: Math. abs (this. options. step)}); this. _ set () ;}; ColorTrans. prototype = {// set the default attribute _ setOptions: function (options) {this. options = {// Default value from: "", // start color (default value for easy automatic acquisition) to: "#000", // end color step: 20, // gradient series speed: 20, // gradient speed style: "color" // Set attributes (Scripting attributes) };$ $. extend (this. options, options | {}) ;}, // reset the color set reset: function (options) {// Set the attribute this according to the parameter. _ options = options =$ $. extend (this. _ options, options | |{}); // gets the color set this. _ colors = ColorGrads ([options. from, options. to], options. step); this. _ index = 0 ;}, // The color gradually enters transIn: function () {this. stop (); this. _ index ++; this. _ set (); if (this. _ index <this. _ colors. length-1) {this. _ timer = setTimeout ($ F. bind (this. transIn, this), this. speed) ;}}, // the color fades out transOut: function () {this. stop (); this. _ index --; this. _ set (); if (this. _ index> 0) {this. _ timer = setTimeout ($ F. bind (this. transOut, this), this. speed) ;}}, // color settings _ set: function () {var color = this. _ colors [Math. min (Math. max (0, this. _ index), this. _ colors. length-1)]; this. _ elem. style [this. style] = "rgb (" + color. join (",") + ")" ;}, // stop: function () {clearTimeout (this. _ timer );}};</script></head><body><style type="text/css"># IdGrads div {height: 1px; overflow: hidden ;}</style>Color gradient change demonstration:<div id="idGrads"> </div><script>function GradsSet(color){var colors = ColorGrads( ["#fff", color], 30 );$$("idGrads").innerHTML = $$A.map(colors.concat().concat(colors.reverse()), function(x){return "<div + x.join(",") + ")'></div>";}).join("");}GradsSet("green");</script><Br /><Br /><style type="text/css"># IdPicker ul {float: left;} # idPicker li {overflow: hidden; width: 10px; height: 10px; line-height: 0; font-size: 0 ;} # idPicker li. on {width: 8px; height: 8px; border: 1px solid #000 ;}# idPicker ul, # idPicker li {list-style: none; margin: 0; padding: 0 ;}# idPicker: after {content :". "; display: block; visibility: hidden; height: 0; clear: both;} # idPicker {zoom: 1 ;}</style>Simple color picker (click to modify the gradient demo color ):<Br /><div id="idPicker"> </div><script>$$("idPicker").innerHTML = "<ul>" +$$A.map(ColorGrads( [ "red", "orange", "yellow", "green", "cyan", "blue", "purple" ], 5 ), function(x){return $$A.map(ColorGrads( [ "white", "rgb(" + x.join(",") + ")" ,"black" ], 5 ), function(x){return "<li + x.join(",") + ")'></li>";}).join("");}).join("</ul><ul>") + "</ul>";$$A.forEach($$("idPicker").getElementsByTagName("li"), function(li){li.onmouseover = function(){ this.className = "on"; }li.onmouseout = function(){ this.className = ""; }li.onclick = function(){ GradsSet(this.style.backgroundColor); }})</script><Br /><Br /><style type="text/css"># IdMenu {background: # DBDBDB; text-align: center; line-height: 25px; table-layout: fixed ;}# idMenu td {cursor: pointer; color: #666; background: # f6f6f6 ;}</style>Color gradient menu:<table id="idMenu" width="600" border="0" cellspacing="5" cellpadding="0"><tr><td>Cropper</td><td>Tween</td><td>Slider</td><td>Resize</td><td>Drag</td><td>Tooltips</td></tr></table><script>$$A.forEach($$("idMenu").getElementsByTagName("td"), function(x, i){var a = x.getElementsByTagName("a")[0], href = a.href, txt = a.innerHTML;x.onclick = function(){ location.href = href; }x.innerHTML = txt;var ct1 = new ColorTrans(x, { to: "white" }),ct2 = new ColorTrans(x, { to: "rgb(20,150,0)", style: "backgroundColor" });x.onmouseover = function(){ ct1.transIn(); ct2.transIn(); }x.onmouseout = function(){ ct1.transOut(); ct2.transOut(); }})</script><Br /><Br /><style type="text/css"># IdRandom {padding: 10px; background: # CCC; color: # fff ;}</style>Click random color gradient:<div id="idRandom"><b>Click random color gradient</b></div><script>var ctRandom = new ColorTrans("idRandom", { style: "backgroundColor" }),ctRandom2 = new ColorTrans("idRandom");$$("idRandom").onclick = function(){var rgb = $$A.map([1,1,1], function(){ return Math.floor((Math.random() * 255)); } ),rgb2 = $$A.map(rgb, function(x){ return 255 - x; } );ctRandom.reset({ from: this.style.backgroundColor, to: "rgb(" + rgb.join(",") + ")" })ctRandom.transIn();ctRandom2.reset({ from: this.style.color, to: "rgb(" + rgb2.join(",") + ")" })ctRandom2.transIn();}</script></body></html>
Tip: you can modify some code before running

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.