JavaScript实现飘雪积雪特效

html:

<!DOCTYPE html>
<html >
<head >
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>js网页雪花效果-对网页元素进行积雪效果的雪花特效</title>

</head>

<body>
<div style="background:#2684C2; width:100%; height:500px; line-height:500px; font-size:100px; text-align:center; color:#FFFFFF"><strong>下雪啦</strong></div>

<script type="text/javascript" src="snow.src.js"></script>
<div style="text-align:center;margin:50px 0; font:normal 14px/24px ‘MicroSoft YaHei‘;">
<p>适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗.</p>
</div>
</body>
</html>

 

js:

(function(e,t,n){"use strict";function r(e,t,n){var r=e.runtimeStyle&&e.runtimeStyle[t],i,s=e.style;return!/^-?[0-9]+\.?[0-9]*(?:px)?$/i.test(n)&&/^-?\d/.test(n)&&(i=s.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":n||0,n=s.pixelLeft+"px",s.left=i,r&&(e.runtimeStyle.left=r)),/^(thin|medium|thick)$/i.test(n)?n:Math.round(parseFloat(n))+"px"}function i(e){return parseInt(e,10)}function s(e,t,i,s){e=(e||"").split(","),e=e[s||0]||e[0]||"auto",e=f.Util.trimText(e).split(" ");if(i!=="backgroundSize"||!!e[0]&&!e[0].match(/cover|contain|auto/)){e[0]=e[0].indexOf("%")===-1?r(t,i+"X",e[0]):e[0];if(e[1]===n){if(i==="backgroundSize")return e[1]="auto",e;e[1]=e[0]}e[1]=e[1].indexOf("%")===-1?r(t,i+"Y",e[1]):e[1]}return e}function o(e,t,n,r,i,s){var o=f.Util.getCSS(t,e,i),u,a,l,c;o.length===1&&(c=o[0],o=[],o[0]=c,o[1]=c);if(o[0].toString().indexOf("%")!==-1)l=parseFloat(o[0])/100,a=n.width*l,e!=="backgroundSize"&&(a-=(s||r).width*l);else if(e==="backgroundSize")if(o[0]==="auto")a=r.width;else if(/contain|cover/.test(o[0])){var h=f.Util.resizeBounds(r.width,r.height,n.width,n.height,o[0]);a=h.width,u=h.height}else a=parseInt(o[0],10);else a=parseInt(o[0],10);return o[1]==="auto"?u=a/r.width*r.height:o[1].toString().indexOf("%")!==-1?(l=parseFloat(o[1])/100,u=n.height*l,e!=="backgroundSize"&&(u-=(s||r).height*l)):u=parseInt(o[1],10),[a,u]}function u(e,t){var n=[];return{storage:n,width:e,height:t,clip:function(){n.push({type:"function",name:"clip",arguments:arguments})},translate:function(){n.push({type:"function",name:"translate",arguments:arguments})},fill:function(){n.push({type:"function",name:"fill",arguments:arguments})},save:function(){n.push({type:"function",name:"save",arguments:arguments})},restore:function(){n.push({type:"function",name:"restore",arguments:arguments})},fillRect:function(){n.push({type:"function",name:"fillRect",arguments:arguments})},createPattern:function(){n.push({type:"function",name:"createPattern",arguments:arguments})},drawShape:function(){var e=[];return n.push({type:"function",name:"drawShape",arguments:e}),{moveTo:function(){e.push({name:"moveTo",arguments:arguments})},lineTo:function(){e.push({name:"lineTo",arguments:arguments})},arcTo:function(){e.push({name:"arcTo",arguments:arguments})},bezierCurveTo:function(){e.push({name:"bezierCurveTo",arguments:arguments})},quadraticCurveTo:function(){e.push({name:"quadraticCurveTo",arguments:arguments})}}},drawImage:function(){n.push({type:"function",name:"drawImage",arguments:arguments})},fillText:function(){n.push({type:"function",name:"fillText",arguments:arguments})},setVariable:function(e,t){return n.push({type:"variable",name:e,arguments:t}),t}}}function a(e){return{zindex:e,children:[]}}var f={},l,c,h;f.Util={},f.Util.log=function(t){f.logging&&e.console&&e.console.log&&e.console.log(t)},f.Util.trimText=function(e){return function(t){return e?e.apply(t):((t||"")+"").replace(/^\s+|\s+$/g,"")}}(String.prototype.trim),f.Util.asFloat=function(e){return parseFloat(e)},function(){var e=/((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g,t=/(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g;f.Util.parseTextShadows=function(n){if(!n||n==="none")return[];var r=n.match(e),i=[];for(var s=0;r&&s<r.length;s++){var o=r[s].match(t);i.push({color:o[0],offsetX:o[1]?o[1].replace("px",""):0,offsetY:o[2]?o[2].replace("px",""):0,blur:o[3]?o[3].replace("px",""):0})}return i}}(),f.Util.parseBackgroundImage=function(e){var t=" \r\n    ",n,r,i,s,o,u=[],a,f=0,l=0,c,h,p=function(){n&&(r.substr(0,1)===‘"‘&&(r=r.substr(1,r.length-2)),r&&h.push(r),n.substr(0,1)==="-"&&(s=n.indexOf("-",1)+1)>0&&(i=n.substr(0,s),n=n.substr(s)),u.push({prefix:i,method:n.toLowerCase(),value:o,args:h})),h=[],n=i=r=o=""};p();for(var d=0,v=e.length;d<v;d++){a=e[d];if(f===0&&t.indexOf(a)>-1)continue;switch(a){case‘"‘:c?c===a&&(c=null):c=a;break;case"(":if(c)break;if(f===0){f=1,o+=a;continue}l++;break;case")":if(c)break;if(f===1){if(l===0){f=0,o+=a,p();continue}l--}break;case",":if(c)break;if(f===0){p();continue}if(f===1&&l===0&&!n.match(/^url$/i)){h.push(r),r="",o+=a;continue}}o+=a,f===0?n+=a:r+=a}return p(),u},f.Util.Bounds=function(e){var t,n={};return e.getBoundingClientRect&&(t=e.getBoundingClientRect(),n.top=t.top,n.bottom=t.bottom||t.top+t.height,n.left=t.left,n.width=e.offsetWidth,n.height=e.offsetHeight),n},f.Util.OffsetBounds=function(e){var t=e.offsetParent?f.Util.OffsetBounds(e.offsetParent):{top:0,left:0};return{top:e.offsetTop+t.top,bottom:e.offsetTop+e.offsetHeight+t.top,left:e.offsetLeft+t.left,width:e.offsetWidth,height:e.offsetHeight}},f.Util.getCSS=function(e,n,r){l!==e&&(c=t.defaultView.getComputedStyle(e,null));var o=c[n];if(/^background(Size|Position)$/.test(n))return s(o,e,n,r);if(/border(Top|Bottom)(Left|Right)Radius/.test(n)){var u=o.split(" ");return u.length<=1&&(u[1]=u[0]),u.map(i)}return o},f.Util.resizeBounds=function(e,t,n,r,i){var s=n/r,o=e/t,u,a;return!i||i==="auto"?(u=n,a=r):s<o^i==="contain"?(a=r,u=r*o):(u=n,a=n/o),{width:u,height:a}},f.Util.BackgroundPosition=function(e,t,n,r,i){var s=o("backgroundPosition",e,t,n,r,i);return{left:s[0],top:s[1]}},f.Util.BackgroundSize=function(e,t,n,r){var i=o("backgroundSize",e,t,n,r);return{width:i[0],height:i[1]}},f.Util.Extend=function(e,t){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},f.Util.Children=function(e){var t;try{t=e.nodeName&&e.nodeName.toUpperCase()==="IFRAME"?e.contentDocument||e.contentWindow.document:function(e){var t=[];return e!==null&&function(e,t){var r=e.length,i=0;if(typeof t.length=="number")for(var s=t.length;i<s;i++)e[r++]=t[i];else while(t[i]!==n)e[r++]=t[i++];return e.length=r,e}(t,e),t}(e.childNodes)}catch(r){f.Util.log("html2canvas.Util.Children failed with exception: "+r.message),t=[]}return t},f.Util.isTransparent=function(e){return e==="transparent"||e==="rgba(0, 0, 0, 0)"},f.Util.Font=function(){var e={};return function(t,r,i){if(e[t+"-"+r]!==n)return e[t+"-"+r];var s=i.createElement("div"),o=i.createElement("img"),u=i.createElement("span"),a="Hidden Text",f,l,c;return s.style.visibility="hidden",s.style.fontFamily=t,s.style.fontSize=r,s.style.margin=0,s.style.padding=0,i.body.appendChild(s),o.src="data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=",o.width=1,o.height=1,o.style.margin=0,o.style.padding=0,o.style.verticalAlign="baseline",u.style.fontFamily=t,u.style.fontSize=r,u.style.margin=0,u.style.padding=0,u.appendChild(i.createTextNode(a)),s.appendChild(u),s.appendChild(o),f=o.offsetTop-u.offsetTop+1,s.removeChild(u),s.appendChild(i.createTextNode(a)),s.style.lineHeight="normal",o.style.verticalAlign="super",l=o.offsetTop-s.offsetTop+1,c={baseline:f,lineWidth:1,middle:l},e[t+"-"+r]=c,i.body.removeChild(s),c}}(),function(){function e(e){return function(t){try{e.addColorStop(t.stop,t.color)}catch(r){n.log(["failed to add color stop: ",r,"; tried to add: ",t])}}}var n=f.Util,r={};f.Generate=r;var i=[/^(-webkit-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/,/^(-o-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/,/^(-webkit-gradient)\((linear|radial),\s((?:\d{1,3}%?)\s(?:\d{1,3}%?),\s(?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)\-]+)\)$/,/^(-moz-linear-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)]+)\)$/,/^(-webkit-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/,/^(-moz-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s?([a-z\-]*)([\w\d\.\s,%\(\)]+)\)$/,/^(-o-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/];r.parseGradient=function(e,t){var n,r,s=i.length,o,u,a,f,l,c,h,p,d,v;for(r=0;r<s;r+=1){o=e.match(i[r]);if(o)break}if(o)switch(o[1]){case"-webkit-linear-gradient":case"-o-linear-gradient":n={type:"linear",x0:null,y0:null,x1:null,y1:null,colorStops:[]},a=o[2].match(/\w+/g);if(a){f=a.length;for(r=0;r<f;r+=1)switch(a[r]){case"top":n.y0=0,n.y1=t.height;break;case"right":n.x0=t.width,n.x1=0;break;case"bottom":n.y0=t.height,n.y1=0;break;case"left":n.x0=0,n.x1=t.width}}n.x0===null&&n.x1===null&&(n.x0=n.x1=t.width/2),n.y0===null&&n.y1===null&&(n.y0=n.y1=t.height/2),a=o[3].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+/g);if(a){f=a.length,l=1/Math.max(f-1,1);for(r=0;r<f;r+=1)c=a[r].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/),c[2]?(u=parseFloat(c[2]),c[3]==="%"?u/=100:u/=t.width):u=r*l,n.colorStops.push({color:c[1],stop:u})}break;case"-webkit-gradient":n={type:o[2]==="radial"?"circle":o[2],x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=o[3].match(/(\d{1,3})%?\s(\d{1,3})%?,\s(\d{1,3})%?\s(\d{1,3})%?/),a&&(n.x0=a[1]*t.width/100,n.y0=a[2]*t.height/100,n.x1=a[3]*t.width/100,n.y1=a[4]*t.height/100),a=o[4].match(/((?:from|to|color-stop)\((?:[0-9\.]+,\s)?(?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)\))+/g);if(a){f=a.length;for(r=0;r<f;r+=1)c=a[r].match(/(from|to|color-stop)\(([0-9\.]+)?(?:,\s)?((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\)/),u=parseFloat(c[2]),c[1]==="from"&&(u=0),c[1]==="to"&&(u=1),n.colorStops.push({color:c[3],stop:u})}break;case"-moz-linear-gradient":n={type:"linear",x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=o[2].match(/(\d{1,3})%?\s(\d{1,3})%?/),a&&(n.x0=a[1]*t.width/100,n.y0=a[2]*t.height/100,n.x1=t.width-n.x0,n.y1=t.height-n.y0),a=o[3].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}%)?)+/g);if(a){f=a.length,l=1/Math.max(f-1,1);for(r=0;r<f;r+=1)c=a[r].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%)?/),c[2]?(u=parseFloat(c[2]),c[3]&&(u/=100)):u=r*l,n.colorStops.push({color:c[1],stop:u})}break;case"-webkit-radial-gradient":case"-moz-radial-gradient":case"-o-radial-gradient":n={type:"circle",x0:0,y0:0,x1:t.width,y1:t.height,cx:0,cy:0,rx:0,ry:0,colorStops:[]},a=o[2].match(/(\d{1,3})%?\s(\d{1,3})%?/),a&&(n.cx=a[1]*t.width/100,n.cy=a[2]*t.height/100),a=o[3].match(/\w+/),c=o[4].match(/[a-z\-]*/);if(a&&c)switch(c[0]){case"farthest-corner":case"cover":case"":h=Math.sqrt(Math.pow(n.cx,2)+Math.pow(n.cy,2)),p=Math.sqrt(Math.pow(n.cx,2)+Math.pow(n.y1-n.cy,2)),d=Math.sqrt(Math.pow(n.x1-n.cx,2)+Math.pow(n.y1-n.cy,2)),v=Math.sqrt(Math.pow(n.x1-n.cx,2)+Math.pow(n.cy,2)),n.rx=n.ry=Math.max(h,p,d,v);break;case"closest-corner":h=Math.sqrt(Math.pow(n.cx,2)+Math.pow(n.cy,2)),p=Math.sqrt(Math.pow(n.cx,2)+Math.pow(n.y1-n.cy,2)),d=Math.sqrt(Math.pow(n.x1-n.cx,2)+Math.pow(n.y1-n.cy,2)),v=Math.sqrt(Math.pow(n.x1-n.cx,2)+Math.pow(n.cy,2)),n.rx=n.ry=Math.min(h,p,d,v);break;case"farthest-side":a[0]==="circle"?n.rx=n.ry=Math.max(n.cx,n.cy,n.x1-n.cx,n.y1-n.cy):(n.type=a[0],n.rx=Math.max(n.cx,n.x1-n.cx),n.ry=Math.max(n.cy,n.y1-n.cy));break;case"closest-side":case"contain":a[0]==="circle"?n.rx=n.ry=Math.min(n.cx,n.cy,n.x1-n.cx,n.y1-n.cy):(n.type=a[0],n.rx=Math.min(n.cx,n.x1-n.cx),n.ry=Math.min(n.cy,n.y1-n.cy))}a=o[5].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+/g);if(a){f=a.length,l=1/Math.max(f-1,1);for(r=0;r<f;r+=1)c=a[r].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/),c[2]?(u=parseFloat(c[2]),c[3]==="%"?u/=100:u/=t.width):u=r*l,n.colorStops.push({color:c[1],stop:u})}}return n},r.Gradient=function(n,r){if(r.width===0||r.height===0)return;var i=t.createElement("canvas"),s=i.getContext("2d"),o,u;i.width=r.width,i.height=r.height,o=f.Generate.parseGradient(n,r);if(o)switch(o.type){case"linear":u=s.createLinearGradient(o.x0,o.y0,o.x1,o.y1),o.colorStops.forEach(e(u)),s.fillStyle=u,s.fillRect(0,0,r.width,r.height);break;case"circle":u=s.createRadialGradient(o.cx,o.cy,0,o.cx,o.cy,o.rx),o.colorStops.forEach(e(u)),s.fillStyle=u,s.fillRect(0,0,r.width,r.height);break;case"ellipse":var a=t.createElement("canvas"),l=a.getContext("2d"),c=Math.max(o.rx,o.ry),h=c*2;a.width=a.height=h,u=l.createRadialGradient(o.rx,o.ry,0,o.rx,o.ry,c),o.colorStops.forEach(e(u)),l.fillStyle=u,l.fillRect(0,0,h,h),s.fillStyle=o.colorStops[o.colorStops.length-1].color,s.fillRect(0,0,i.width,i.height),s.drawImage(a,o.cx-o.rx,o.cy-o.ry,2*o.rx,2*o.ry)}return i},r.ListAlpha=function(e){var t="",n;do n=e%26,t=String.fromCharCode(n+64)+t,e/=26;while(e*26>26);return t},r.ListRoman=function(e){var t=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"],n=[1e3,900,500,400,100,90,50,40,10,9,5,4,1],r="",i,s=t.length;if(e<=0||e>=4e3)return e;for(i=0;i<s;i+=1)while(e>=n[i])e-=n[i],r+=t[i];return r}}(),f.Parse=function(r,i){function s(){return Math.max(Math.max(lt.body.scrollWidth,lt.documentElement.scrollWidth),Math.max(lt.body.offsetWidth,lt.documentElement.offsetWidth),Math.max(lt.body.clientWidth,lt.documentElement.clientWidth))}function o(){return Math.max(Math.max(lt.body.scrollHeight,lt.documentElement.scrollHeight),Math.max(lt.body.offsetHeight,lt.documentElement.offsetHeight),Math.max(lt.body.clientHeight,lt.documentElement.clientHeight))}function l(e,t){var n=parseInt(vt(e,t),10);return isNaN(n)?0:n}function c(e,t,n,r,i,s){s!=="transparent"&&(e.setVariable("fillStyle",s),e.fillRect(t,n,r,i),ft+=1)}function h(e,t,n){if(e.length>0)return t+n.toUpperCase()}function p(e,t){switch(t){case"lowercase":return e.toLowerCase();case"capitalize":return e.replace(/(^|\s|:|-|\(|\))([a-z])/g,h);case"uppercase":return e.toUpperCase();default:return e}}function d(e){return/^(normal|none|0px)$/.test(e)}function v(e,t,n,r){e!==null&&ct.trimText(e).length>0&&(r.fillText(e,t,n),ft+=1)}function m(e,t,n,r){var i=!1,s=vt(t,"fontWeight"),o=vt(t,"fontFamily"),u=vt(t,"fontSize"),a=ct.parseTextShadows(vt(t,"textShadow"));switch(parseInt(s,10)){case 401:s="bold";break;case 400:s="normal"}e.setVariable("fillStyle",r),e.setVariable("font",[vt(t,"fontStyle"),vt(t,"fontVariant"),s,u,o].join(" ")),e.setVariable("textAlign",i?"right":"left"),a.length&&(e.setVariable("shadowColor",a[0].color),e.setVariable("shadowOffsetX",a[0].offsetX),e.setVariable("shadowOffsetY",a[0].offsetY),e.setVariable("shadowBlur",a[0].blur));if(n!=="none")return ct.Font(o,u,lt)}function g(e,t,n,r,i){switch(t){case"underline":c(e,n.left,Math.round(n.top+r.baseline+r.lineWidth),n.width,1,i);break;case"overline":c(e,n.left,Math.round(n.top),n.width,1,i);break;case"line-through":c(e,n.left,Math.ceil(n.top+r.middle+r.lineWidth),n.width,1,i)}}function y(e,t,n,r,i){var s;if(ht.rangeBounds&&!i){if(n!=="none"||ct.trimText(t).length!==0)s=b(t,e.node,e.textOffset);e.textOffset+=t.length}else if(e.node&&typeof e.node.nodeValue=="string"){var o=r?e.node.splitText(t.length):null;s=w(e.node,i),e.node=o}return s}function b(e,t,n){var r=lt.createRange();return r.setStart(t,n),r.setEnd(t,n+e.length),r.getBoundingClientRect()}function w(e,t){var n=e.parentNode,r=lt.createElement("wrapper"),i=e.cloneNode(!0);r.appendChild(e.cloneNode(!0)),n.replaceChild(r,e);var s=t?ct.OffsetBounds(r):ct.Bounds(r);return n.replaceChild(i,r),s}function E(e,t,n){var r=n.ctx,s=vt(e,"color"),o=vt(e,"textDecoration"),u=vt(e,"textAlign"),a,f,l={node:t,textOffset:0};ct.trimText(t.nodeValue).length>0&&(t.nodeValue=p(t.nodeValue,vt(e,"textTransform")),u=u.replace(["-webkit-auto"],["auto"]),f=!i.letterRendering&&/^(left|right|justify|auto)$/.test(u)&&d(vt(e,"letterSpacing"))?t.nodeValue.split(/(\b| )/):t.nodeValue.split(""),a=m(r,e,o,s),i.chinese&&f.forEach(function(e,t){/.*[\u4E00-\u9FA5].*$/.test(e)&&(e=e.split(""),e.unshift(t,1),f.splice.apply(f,e))}),f.forEach(function(e,t){var i=y(l,e,o,t<f.length-1,n.transform.matrix);i&&(v(e,i.left,i.bottom,r),g(r,o,i,a,s))}))}function S(e,t){var n=lt.createElement("boundelement"),r,i;return n.style.display="inline",r=e.style.listStyleType,e.style.listStyleType="none",n.appendChild(lt.createTextNode(t)),e.insertBefore(n,e.firstChild),i=ct.Bounds(n),e.removeChild(n),e.style.listStyleType=r,i}function x(e){var t=-1,n=1,r=e.parentNode.childNodes;if(e.parentNode){while(r[++t]!==e)r[t].nodeType===1&&n++;return n}return-1}function T(e,t){var n=x(e),r;switch(t){case"decimal":r=n;break;case"decimal-leading-zero":r=n.toString().length===1?n="0"+n.toString():n.toString();break;case"upper-roman":r=f.Generate.ListRoman(n);break;case"lower-roman":r=f.Generate.ListRoman(n).toLowerCase();break;case"lower-alpha":r=f.Generate.ListAlpha(n).toLowerCase();break;case"upper-alpha":r=f.Generate.ListAlpha(n)}return r+". "}function N(e,t,n){var r,i,s=t.ctx,o=vt(e,"listStyleType"),u;if(/^(decimal|decimal-leading-zero|upper-alpha|upper-latin|upper-roman|lower-alpha|lower-greek|lower-latin|lower-roman)$/i.test(o)){i=T(e,o),u=S(e,i),m(s,e,"none",vt(e,"color"));if(vt(e,"listStylePosition")!=="inside")return;s.setVariable("textAlign","left"),r=n.left,v(i,r,u.bottom,s)}}function C(e){var t=r[e];return t&&t.succeeded===!0?t.img:!1}function k(e,t){var n=Math.max(e.left,t.left),r=Math.max(e.top,t.top),i=Math.min(e.left+e.width,t.left+t.width),s=Math.min(e.top+e.height,t.top+t.height);return{left:n,top:r,width:i-n,height:s-r}}function L(e,t,n){var r,i=t.cssPosition!=="static",s=i?vt(e,"zIndex"):"auto",o=vt(e,"opacity"),u=vt(e,"cssFloat")!=="none";t.zIndex=r=a(s),r.isPositioned=i,r.isFloated=u,r.opacity=o,r.ownStacking=s!=="auto"||o<1,n&&n.zIndex.children.push(t)}function A(e,t,n,r,i){var s=l(t,"paddingLeft"),o=l(t,"paddingTop"),u=l(t,"paddingRight"),a=l(t,"paddingBottom");R(e,n,0,0,n.width,n.height,r.left+s+i[3].width,r.top+o+i[0].width,r.width-(i[1].width+i[3].width+s+u),r.height-(i[0].width+i[2].width+o+a))}function O(e){return["Top","Right","Bottom","Left"].map(function(t){return{width:l(e,"border"+t+"Width"),color:vt(e,"border"+t+"Color")}})}function M(e){return["TopLeft","TopRight","BottomRight","BottomLeft"].map(function(t){return vt(e,"border"+t+"Radius")})}function _(e,t,n,r){var i=function(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}};return{start:e,startControl:t,endControl:n,end:r,subdivide:function(s){var o=i(e,t,s),u=i(t,n,s),a=i(n,r,s),f=i(o,u,s),l=i(u,a,s),c=i(f,l,s);return[_(e,o,f,c),_(c,l,a,r)]},curveTo:function(e){e.push(["bezierCurve",t.x,t.y,n.x,n.y,r.x,r.y])},curveToReversed:function(r){r.push(["bezierCurve",n.x,n.y,t.x,t.y,e.x,e.y])}}}function D(e,t,n,r,i,s,o){t[0]>0||t[1]>0?(e.push(["line",r[0].start.x,r[0].start.y]),r[0].curveTo(e),r[1].curveTo(e)):e.push(["line",s,o]),(n[0]>0||n[1]>0)&&e.push(["line",i[0].start.x,i[0].start.y])}function P(e,t,n,r,i,s,o){var u=[];return t[0]>0||t[1]>0?(u.push(["line",r[1].start.x,r[1].start.y]),r[1].curveTo(u)):u.push(["line",e.c1[0],e.c1[1]]),n[0]>0||n[1]>0?(u.push(["line",s[0].start.x,s[0].start.y]),s[0].curveTo(u),u.push(["line",o[0].end.x,o[0].end.y]),o[0].curveToReversed(u)):(u.push(["line",e.c2[0],e.c2[1]]),u.push(["line",e.c3[0],e.c3[1]])),t[0]>0||t[1]>0?(u.push(["line",i[1].end.x,i[1].end.y]),i[1].curveToReversed(u)):u.push(["line",e.c4[0],e.c4[1]]),u}function H(e,t,n){var r=e.left,i=e.top,s=e.width,o=e.height,u=t[0][0],a=t[0][1],f=t[1][0],l=t[1][1],c=t[2][0],h=t[2][1],p=t[3][0],d=t[3][1],v=s-f,m=o-h,g=s-c,y=o-d;return{topLeftOuter:yt(r,i,u,a).topLeft.subdivide(.5),topLeftInner:yt(r+n[3].width,i+n[0].width,Math.max(0,u-n[3].width),Math.max(0,a-n[0].width)).topLeft.subdivide(.5),topRightOuter:yt(r+v,i,f,l).topRight.subdivide(.5),topRightInner:yt(r+Math.min(v,s+n[3].width),i+n[0].width,v>s+n[3].width?0:f-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:yt(r+g,i+m,c,h).bottomRight.subdivide(.5),bottomRightInner:yt(r+Math.min(g,s+n[3].width),i+Math.min(m,o+n[0].width),Math.max(0,c-n[1].width),Math.max(0,h-n[2].width)).bottomRight.subdivide(.5),bottomLeftOuter:yt(r,i+y,p,d).bottomLeft.subdivide(.5),bottomLeftInner:yt(r+n[3].width,i+y,Math.max(0,p-n[3].width),Math.max(0,d-n[2].width)).bottomLeft.subdivide(.5)}}function B(e,t,n,r,i){var s=vt(e,"backgroundClip"),o=[];switch(s){case"content-box":case"padding-box":D(o,r[0],r[1],t.topLeftInner,t.topRightInner,i.left+n[3].width,i.top+n[0].width),D(o,r[1],r[2],t.topRightInner,t.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width),D(o,r[2],r[3],t.bottomRightInner,t.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width),D(o,r[3],r[0],t.bottomLeftInner,t.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:D(o,r[0],r[1],t.topLeftOuter,t.topRightOuter,i.left,i.top),D(o,r[1],r[2],t.topRightOuter,t.bottomRightOuter,i.left+i.width,i.top),D(o,r[2],r[3],t.bottomRightOuter,t.bottomLeftOuter,i.left+i.width,i.top+i.height),D(o,r[3],r[0],t.bottomLeftOuter,t.topLeftOuter,i.left,i.top+i.height)}return o}function j(e,t,n){var r=t.left,i=t.top,s=t.width,o=t.height,u,a,f,l,c,h,p=M(e),d=H(t,p,n),v={clip:B(e,d,n,p,t),borders:[]};for(u=0;u<4;u++)if(n[u].width>0){a=r,f=i,l=s,c=o-n[2].width;switch(u){case 0:c=n[0].width,h=P({c1:[a,f],c2:[a+l,f],c3:[a+l-n[1].width,f+c],c4:[a+n[3].width,f+c]},p[0],p[1],d.topLeftOuter,d.topLeftInner,d.topRightOuter,d.topRightInner);break;case 1:a=r+s-n[1].width,l=n[1].width,h=P({c1:[a+l,f],c2:[a+l,f+c+n[2].width],c3:[a,f+c],c4:[a,f+n[0].width]},p[1],p[2],d.topRightOuter,d.topRightInner,d.bottomRightOuter,d.bottomRightInner);break;case 2:f=f+o-n[2].width,c=n[2].width,h=P({c1:[a+l,f+c],c2:[a,f+c],c3:[a+n[3].width,f],c4:[a+l-n[3].width,f]},p[2],p[3],d.bottomRightOuter,d.bottomRightInner,d.bottomLeftOuter,d.bottomLeftInner);break;case 3:l=n[3].width,h=P({c1:[a,f+c+n[2].width],c2:[a,f],c3:[a+l,f+n[0].width],c4:[a+l,f+c]},p[3],p[0],d.bottomLeftOuter,d.bottomLeftInner,d.topLeftOuter,d.topLeftInner)}v.borders.push({args:h,color:n[u].color})}return v}function F(e,t){var n=e.drawShape();return t.forEach(function(e,t){n[t===0?"moveTo":e[0]+"To"].apply(null,e.slice(1))}),n}function I(e,t,n){n!=="transparent"&&(e.setVariable("fillStyle",n),F(e,t),e.fill(),ft+=1)}function q(e,t,n){var r=lt.createElement("valuewrap"),i=["lineHeight","textAlign","fontFamily","color","fontSize","paddingLeft","paddingTop","width","height","border","borderLeftWidth","borderTopWidth"],s,o;i.forEach(function(t){try{r.style[t]=vt(e,t)}catch(n){ct.log("html2canvas: Parse: Exception caught in renderFormValue: "+n.message)}}),r.style.borderColor="black",r.style.borderStyle="solid",r.style.display="block",r.style.position="absolute";if(/^(submit|reset|button|text|password)$/.test(e.type)||e.nodeName==="SELECT")r.style.lineHeight=vt(e,"height");r.style.top=t.top+"px",r.style.left=t.left+"px",s=e.nodeName==="SELECT"?(e.options[e.selectedIndex]||0).text:e.value,s||(s=e.placeholder),o=lt.createTextNode(s),r.appendChild(o),dt.appendChild(r),E(e,o,n),dt.removeChild(r)}function R(e){e.drawImage.apply(e,Array.prototype.slice.call(arguments,1)),ft+=1}function U(n,r){var i=e.getComputedStyle(n,r);if(!i||!i.content||i.content==="none"||i.content==="-moz-alt-content"||i.display==="none")return;var s=i.content+"",o=s.substr(0,1);o===s.substr(s.length-1)&&o.match(/‘|"/)&&(s=s.substr(1,s.length-2));var u=s.substr(0,3)==="url",a=t.createElement(u?"img":"span");return a.className=mt+"-before "+mt+"-after",Object.keys(i).filter(z).forEach(function(e){try{a.style[e]=i[e]}catch(t){ct.log(["Tried to assign readonly property ",e,"Error:",t])}}),u?a.src=ct.parseBackgroundImage(s)[0].args[0]:a.innerHTML=s,a}function z(t){return isNaN(e.parseInt(t,10))}function W(e,t){var n=U(e,":before"),r=U(e,":after");if(!n&&!r)return;n&&(e.className+=" "+mt+"-before",e.parentNode.insertBefore(n,e),st(n,t,!0),e.parentNode.removeChild(n),e.className=e.className.replace(mt+"-before","").trim()),r&&(e.className+=" "+mt+"-after",e.appendChild(r),st(r,t,!0),e.removeChild(r),e.className=e.className.replace(mt+"-after","").trim())}function X(e,t,n,r){var i=Math.round(r.left+n.left),s=Math.round(r.top+n.top);e.createPattern(t),e.translate(i,s),e.fill(),e.translate(-i,-s)}function V(e,t,n,r,i,s,o,u){var a=[];a.push(["line",Math.round(i),Math.round(s)]),a.push(["line",Math.round(i+o),Math.round(s)]),a.push(["line",Math.round(i+o),Math.round(u+s)]),a.push(["line",Math.round(i),Math.round(u+s)]),F(e,a),e.save(),e.clip(),X(e,t,n,r),e.restore()}function $(e,t,n){c(e,t.left,t.top,t.width,t.height,n)}function J(e,t,n,r,i){var s=ct.BackgroundSize(e,t,r,i),o=ct.BackgroundPosition(e,t,r,i,s),u=vt(e,"backgroundRepeat").split(",").map(ct.trimText);r=Q(r,s),u=u[i]||u[0];switch(u){case"repeat-x":V(n,r,o,t,t.left,t.top+o.top,99999,r.height);break;case"repeat-y":V(n,r,o,t,t.left+o.left,t.top,r.width,99999);break;case"no-repeat":V(n,r,o,t,t.left+o.left,t.top+o.top,r.width,r.height);break;default:X(n,r,o,{top:t.top,left:t.left,width:r.width,height:r.height})}}function K(e,t,n){var r=vt(e,"backgroundImage"),i=ct.parseBackgroundImage(r),s,o=i.length;while(o--){r=i[o];if(!r.args||r.args.length===0)continue;var u=r.method==="url"?r.args[0]:r.value;s=C(u),s?J(e,t,n,s,o):ct.log("html2canvas: Error loading background:",r)}}function Q(e,t){if(e.width===t.width&&e.height===t.height)return e;var n,r=lt.createElement("canvas");return r.width=t.width,r.height=t.height,n=r.getContext("2d"),R(n,e,0,0,e.width,e.height,0,0,t.width,t.height),r}function G(e,t,n){return e.setVariable("globalAlpha",vt(t,"opacity")*(n?n.opacity:1))}function Y(e){return e.replace("px","")}function Z(e,t){var n=vt(e,"transform")||vt(e,"-webkit-transform")||vt(e,"-moz-transform")||vt(e,"-ms-transform")||vt(e,"-o-transform"),r=vt(e,"transform-origin")||vt(e,"-webkit-transform-origin")||vt(e,"-moz-transform-origin")||vt(e,"-ms-transform-origin")||vt(e,"-o-transform-origin")||"0px 0px";r=r.split(" ").map(Y).map(ct.asFloat);var i;if(n&&n!=="none"){var s=n.match(bt);if(s)switch(s[1]){case"matrix":i=s[2].split(",").map(ct.trimText).map(ct.asFloat)}}return{origin:r,matrix:i}}function et(e,t,n,r){var a=u(t?n.width:s(),t?n.height:o()),f={ctx:a,opacity:G(a,e,t),cssPosition:vt(e,"position"),borders:O(e),transform:r,clip:t&&t.clip?ct.Extend({},t.clip):null};return L(e,f,t),i.useOverflow===!0&&/(hidden|scroll|auto)/.test(vt(e,"overflow"))===!0&&/(BODY)/i.test(e.nodeName)===!1&&(f.clip=f.clip?k(f.clip,n):n),f}function tt(e,t,n){var r={left:t.left+e[3].width,top:t.top+e[0].width,width:t.width-(e[1].width+e[3].width),height:t.height-(e[0].width+e[2].width)};return n&&(r=k(r,n)),r}function nt(e,t){var n=t.matrix?ct.OffsetBounds(e):ct.Bounds(e);return t.origin[0]+=n.left,t.origin[1]+=n.top,n}function rt(e,t,n,r){var i=Z(e,t),s=nt(e,i),o,u=et(e,t,s,i),a=u.borders,f=u.ctx,l=tt(a,s,u.clip),c=j(e,s,a),h=pt.test(e.nodeName)?"#efefef":vt(e,"backgroundColor");F(f,c.clip),f.save(),f.clip(),l.height>0&&l.width>0&&!r?($(f,s,h),K(e,l,f)):r&&(u.backgroundColor=h),f.restore(),c.borders.forEach(function(e){I(f,e.args,e.color)}),n||W(e,u);switch(e.nodeName){case"IMG":(o=C(e.getAttribute("src")))?A(f,e,o,s,a):ct.log("html2canvas: Error loading <img>:"+e.getAttribute("src"));break;case"INPUT":/^(text|url|email|submit|button|reset)$/.test(e.type)&&(e.value||e.placeholder||"").length>0&&q(e,s,u);break;case"TEXTAREA":(e.value||e.placeholder||"").length>0&&q(e,s,u);break;case"SELECT":(e.options||e.placeholder||"").length>0&&q(e,s,u);break;case"LI":N(e,u,l);break;case"CANVAS":A(f,e,e,s,a)}return u}function it(e){return vt(e,"display")!=="none"&&vt(e,"visibility")!=="hidden"&&!e.hasAttribute("data-html2canvas-ignore")}function st(e,t,n){it(e)&&(t=rt(e,t,n,!1)||t,pt.test(e.nodeName)||ot(e,t,n))}function ot(e,t,n){ct.Children(e).forEach(function(r){r.nodeType===r.ELEMENT_NODE?st(r,t,n):r.nodeType===r.TEXT_NODE&&E(e,r,t)})}function ut(){var e=vt(t.documentElement,"backgroundColor"),n=ct.isTransparent(e)&&at===t.body,r=rt(at,null,!1,n);return ot(at,r),n&&(e=r.backgroundColor),dt.removeChild(gt),{backgroundColor:e,stack:r}}e.scroll(0,0);var at=i.elements===n?t.body:i.elements[0],ft=0,lt=at.ownerDocument,ct=f.Util,ht=ct.Support(i,lt),pt=new RegExp("("+i.ignoreElements+")"),dt=lt.body,vt=ct.getCSS,mt="___html2canvas___pseudoelement",gt=lt.createElement("style");gt.innerHTML="."+mt+‘-before:before { content: "" !important; display: none !important; }‘+"."+mt+‘-after:after { content: "" !important; display: none !important; }‘,dt.appendChild(gt),r=r||{};var yt=function(e){return function(t,n,r,i){var s=r*e,o=i*e,u=t+r,a=n+i;return{topLeft:_({x:t,y:a},{x:t,y:a-o},{x:u-s,y:n},{x:u,y:n}),topRight:_({x:t,y:n},{x:t+s,y:n},{x:u,y:a-o},{x:u,y:a}),bottomRight:_({x:u,y:n},{x:u,y:n+o},{x:t+s,y:a},{x:t,y:a}),bottomLeft:_({x:u,y:a},{x:u-s,y:a},{x:t,y:n+o},{x:t,y:n})}}}(4*((Math.sqrt(2)-1)/3)),bt=/(matrix)\((.+)\)/;return ut()},f.Preload=function(r){function i(e){N.href=e,N.href=N.href;var t=N.protocol+N.host;return t===m}function s(){g.log("html2canvas: start: images: "+v.numLoaded+" / "+v.numTotal+" (failed: "+v.numFailed+")"),!v.firstRun&&v.numLoaded>=v.numTotal&&(g.log("Finished loading images: # "+v.numTotal+" (failed: "+v.numFailed+")"),typeof r.complete=="function"&&r.complete(v))}function o(t,i,o){var u,a=r.proxy,f;N.href=t,t=N.href,u="html2canvas_"+w++,o.callbackname=u,a.indexOf("?")>-1?a+="&":a+="?",a+="url="+encodeURIComponent(t)+"&callback="+u,f=S.createElement("script"),e[u]=function(t){t.substring(0,6)==="error:"?(o.succeeded=!1,v.numLoaded++,v.numFailed++,s()):(d(i,o),i.src=t),e[u]=n;try{delete e[u]}catch(r){}f.parentNode.removeChild(f),f=null,delete o.script,delete o.callbackname},f.setAttribute("type","text/javascript"),f.setAttribute("src",a),o.script=f,e.document.body.appendChild(f)}function u(t,n){var r=e.getComputedStyle(t,n),i=r.content;i.substr(0,3)==="url"&&y.loadImage(f.Util.parseBackgroundImage(i)[0].args[0]),h(r.backgroundImage,t)}function a(e){u(e,":before"),u(e,":after")}function l(e,t){var r=f.Generate.Gradient(e,t);r!==n&&(v[e]={img:r,succeeded:!0},v.numTotal++,v.numLoaded++,s())}function c(e){return e&&e.method&&e.args&&e.args.length>0}function h(e,t){var r;f.Util.parseBackgroundImage(e).filter(c).forEach(function(e){e.method==="url"?y.loadImage(e.args[0]):e.method.match(/\-?gradient$/)&&(r===n&&(r=f.Util.Bounds(t)),l(e.value,r))})}function p(e){var t=!1;try{g.Children(e).forEach(p)}catch(r){}try{t=e.nodeType}catch(i){t=!1,g.log("html2canvas: failed to access some element‘s nodeType - Exception: "+i.message)}if(t===1||t===n){a(e);try{h(g.getCSS(e,"backgroundImage"),e)}catch(r){g.log("html2canvas: failed to get background-image - Exception: "+r.message)}h(e)}}function d(t,i){t.onload=function(){i.timer!==n&&e.clearTimeout(i.timer),v.numLoaded++,i.succeeded=!0,t.onerror=t.onload=null,s()},t.onerror=function(){if(t.crossOrigin==="anonymous"){e.clearTimeout(i.timer);if(r.proxy){var n=t.src;t=new Image,i.img=t,t.src=n,o(t.src,t,i);return}}v.numLoaded++,v.numFailed++,i.succeeded=!1,t.onerror=t.onload=null,s()}}var v={numLoaded:0,numFailed:0,numTotal:0,cleanupDone:!1},m,g=f.Util,y,b,w=0,E=r.elements[0]||t.body,S=E.ownerDocument,x=E.getElementsByTagName("img"),T=x.length,N=S.createElement("a"),C=function(e){return e.crossOrigin!==n}(new Image),k;N.href=e.location.href,m=N.protocol+N.host,y={loadImage:function(e){var t,s;e&&v[e]===n&&(t=new Image,e.match(/data:image\/.*;base64,/i)?(t.src=e.replace(/url\([‘"]{0,}|[‘"]{0,}\)$/ig,""),s=v[e]={img:t},v.numTotal++,d(t,s)):i(e)||r.allowTaint===!0?(s=v[e]={img:t},v.numTotal++,d(t,s),t.src=e):C&&!r.allowTaint&&r.useCORS?(t.crossOrigin="anonymous",s=v[e]={img:t},v.numTotal++,d(t,s),t.src=e):r.proxy&&(s=v[e]={img:t},v.numTotal++,o(e,t,s)))},cleanupDOM:function(i){var o,u;if(!v.cleanupDone){i&&typeof i=="string"?g.log("html2canvas: Cleanup because: "+i):g.log("html2canvas: Cleanup after timeout: "+r.timeout+" ms.");for(u in v)if(v.hasOwnProperty(u)){o=v[u];if(typeof o=="object"&&o.callbackname&&o.succeeded===n){e[o.callbackname]=n;try{delete e[o.callbackname]}catch(a){}o.script&&o.script.parentNode&&(o.script.setAttribute("src","about:blank"),o.script.parentNode.removeChild(o.script)),v.numLoaded++,v.numFailed++,g.log("html2canvas: Cleaned up failed img: ‘"+u+"‘ Steps: "+v.numLoaded+" / "+v.numTotal)}}e.stop!==n?e.stop():t.execCommand!==n&&t.execCommand("Stop",!1),t.close!==n&&t.close(),v.cleanupDone=!0,(!i||typeof i!="string")&&s()}},renderingDone:function(){k&&e.clearTimeout(k)}},r.timeout>0&&(k=e.setTimeout(y.cleanupDOM,r.timeout)),g.log("html2canvas: Preload starts: finding background-images"),v.firstRun=!0,p(E),g.log("html2canvas: Preload: Finding images");for(b=0;b<T;b+=1)y.loadImage(x[b].getAttribute("src"));return v.firstRun=!1,g.log("html2canvas: Preload: Done."),v.numTotal===v.numLoaded&&s(),y},f.Renderer=function(e,r){function i(e){function t(e){Object.keys(e).sort().forEach(function(n){var i=[],s=[],o=[],u=[];e[n].forEach(function(e){e.node.zIndex.isPositioned||e.node.zIndex.opacity<1?o.push(e):e.node.zIndex.isFloated?s.push(e):i.push(e)}),function a(e){e.forEach(function(e){u.push(e),e.children&&a(e.children)})}(i.concat(s,o)),u.forEach(function(e){e.context?t(e.context):r.push(e.node)})})}var r=[],i;return i=function(e){function t(e,r,i){var s=r.zIndex.zindex==="auto"?0:Number(r.zIndex.zindex),o=e,u=r.zIndex.isPositioned,a=r.zIndex.isFloated,f={node:r},l=i;if(r.zIndex.ownStacking)o=f.context={"!":[{node:r,children:[]}]},l=n;else if(u||a)l=f.children=[];s===0&&i?i.push(f):(e[s]||(e[s]=[]),e[s].push(f)),r.zIndex.children.forEach
(function(e){t(o,e,l)})}var r={};return t(r,e),r}(e),t(i),r}function s(e){var t;if(typeof r.renderer=="string"&&f.Renderer[e]!==n)t=f.Renderer[e](r);else{if(typeof e!="function")throw new Error("Unknown renderer");t=e(r)}if(typeof t!="function")throw new Error("Invalid renderer defined");return t}return s(r.renderer)(e,r,t,i(e.stack),f)},f.Util.Support=function(e,t){function r(){var e=new Image,r=t.createElement("canvas"),i=r.getContext===n?!1:r.getContext("2d");if(i===!1)return!1;r.width=r.height=10,e.src=["data:image/svg+xml,","<svg xmlns=‘http://www.w3.org/2000/svg‘ width=‘10‘ height=‘10‘>","<foreignObject width=‘10‘ height=‘10‘>","<div xmlns=‘http://www.w3.org/1999/xhtml‘ style=‘width:10;height:10;‘>","sup","</div>","</foreignObject>","</svg>"].join("");try{i.drawImage(e,0,0),r.toDataURL()}catch(s){return!1}return f.Util.log("html2canvas: Parse: SVG powered rendering available"),!0}function i(){var e,n,r,i,s=!1;return t.createRange&&(e=t.createRange(),e.getBoundingClientRect&&(n=t.createElement("boundtest"),n.style.height="123px",n.style.display="block",t.body.appendChild(n),e.selectNode(n),r=e.getBoundingClientRect(),i=r.height,i===123&&(s=!0),t.body.removeChild(n))),s}return{rangeBounds:i(),svgRendering:e.svgRendering&&r()}},e.html2canvas=function(t,n){t=t.length?t:[t];var r,i,s={logging:!1,elements:t,background:"#fff",proxy:null,timeout:0,useCORS:!1,allowTaint:!1,svgRendering:!1,ignoreElements:"IFRAME|OBJECT|PARAM",useOverflow:!0,letterRendering:!1,chinese:!1,width:null,height:null,taintTest:!0,renderer:"Canvas"};return s=f.Util.Extend(n,s),f.logging=s.logging,s.complete=function(e){if(typeof s.onpreloaded=="function"&&s.onpreloaded(e)===!1)return;r=f.Parse(e,s);if(typeof s.onparsed=="function"&&s.onparsed(r)===!1)return;i=f.Renderer(r,s),typeof s.onrendered=="function"&&s.onrendered(i)},e.setTimeout(function(){f.Preload(s)},0),{render:function(e,t){return f.Renderer(e,f.Util.Extend(t,s))},parse:function(e,t){return f.Parse(e,f.Util.Extend(t,s))},preload:function(e){return f.Preload(f.Util.Extend(e,s))},log:f.Util.log}},e.html2canvas.log=f.Util.log,e.html2canvas.Renderer={Canvas:n},f.Renderer.Canvas=function(e){function r(e,t){e.beginPath(),t.forEach(function(t){e[t.name].apply(e,t.arguments)}),e.closePath()}function i(e){if(u.indexOf(e.arguments[0].src)===-1){l.drawImage(e.arguments[0],0,0);try{l.getImageData(0,0,1,1)}catch(t){return a=o.createElement("canvas"),l=a.getContext("2d"),!1}u.push(e.arguments[0].src)}return!0}function s(t,n){switch(n.type){case"variable":t[n.name]=n.arguments;break;case"function":switch(n.name){case"createPattern":if(n.arguments[0].width>0&&n.arguments[0].height>0)try{t.fillStyle=t.createPattern(n.arguments[0],"repeat")}catch(s){c.log("html2canvas: Renderer: Error creating pattern",s.message)}break;case"drawShape":r(t,n.arguments);break;case"drawImage":n.arguments[8]>0&&n.arguments[7]>0&&(!e.taintTest||e.taintTest&&i(n))&&t.drawImage.apply(t,n.arguments);break;default:t[n.name].apply(t,n.arguments)}}}e=e||{};var o=t,u=[],a=t.createElement("canvas"),l=a.getContext("2d"),c=f.Util,h=e.canvas||o.createElement("canvas");return function(e,t,r,i,o){var u=h.getContext("2d"),a,f,l,p=e.stack;return h.width=h.style.width=t.width||p.ctx.width,h.height=h.style.height=t.height||p.ctx.height,l=u.fillStyle,u.fillStyle=c.isTransparent(p.backgroundColor)&&t.background!==n?t.background:e.backgroundColor,u.fillRect(0,0,h.width,h.height),u.fillStyle=l,i.forEach(function(e){u.textBaseline="bottom",u.save(),e.transform.matrix&&(u.translate(e.transform.origin[0],e.transform.origin[1]),u.transform.apply(u,e.transform.matrix),u.translate(-e.transform.origin[0],-e.transform.origin[1])),e.clip&&(u.beginPath(),u.rect(e.clip.left,e.clip.top,e.clip.width,e.clip.height),u.clip()),e.ctx.storage&&e.ctx.storage.forEach(function(e){s(u,e)}),u.restore()}),c.log("html2canvas: Renderer: Canvas renderer done - returning canvas obj"),t.elements.length===1&&typeof t.elements[0]=="object"&&t.elements[0].nodeName!=="BODY"?(f=o.Util.Bounds(t.elements[0]),a=r.createElement("canvas"),a.width=Math.ceil(f.width),a.height=Math.ceil(f.height),u=a.getContext("2d"),u.drawImage(h,f.left,f.top,f.width,f.height,0,0,f.width,f.height),h=null,a):h}}})(window,document);var detectEdge=function(){function e(e,t,s){var o=n.createImageData(r,i),u=e.width,a=e.height,f=e.data,l=o.data,c=u*4,h=c+4,p=a-1,d=u-1,v=new Date;for(var m=1;m<p;++m){var g=h-4,y=g-c,b=g+c,w=-f[y]-f[g]-f[b],E=-f[++y]-f[++g]-f[++b],S=-f[++y]-f[++g]-f[++b],x=f[y+=2],T=f[g+=2],N=f[b+=2],C=-x-T-N,k=f[++y],L=f[++g],A=f[++b],O=-k-L-A,M=f[++y],_=f[++g],D=f[++b],P=-M-_-D;for(var H=1;H<d;++H){g=h+4,y=g-c,b=g+c;var B=t+w-x-T*-8-N,j=t+E-k-L*-8-A,F=t+S-M-_*-8-D;w=C,E=O,S=P,x=f[y],T=f[g],N=f[b],C=-x-T-N,k=f[++y],L=f[++g],A=f[++b],O=-k-L-A,M=f[++y],_=f[++g],D=f[++b],P=-M-_-D,s?(factor=.3*(B+C)+.59*(j+O)+.11*(F+P),l[h]=factor,l[++h]=factor,l[++h]=factor):(l[h]=B+C,l[++h]=j+O,l[++h]=F+P),l[++h]=255,++h}h+=8}return o}function t(t){var n=t.width,r=t.height,i=e(t,255,1),s=i.data,o=0;for(var u=0;u<r;++u)for(var a=0;a<n;++a)s[o]<240?(s[o]=0,s[++o]=0,s[++o]=0):(s[o]=255,s[++o]=255,s[++o]=255),s[++o]=255,++o;return i}var n,r,i,s,o;return function(e){r=e.width,i=e.height,o=new Array(r),s=new Array(r),n=e.getContext("2d");var u=n.getImageData(0,0,r,i),a=t(u),f=a.data;for(var l=0;l<r;l++){s[l]=new Array(i),o[l]=new Array(i);for(var c=0;c<i;c++){o[l][c]=0;var h=(c*r+l)*4;f[h]<255||f[h+1]<255||f[h+2]<255?(s[l][c]=!0,f[h]=f[h+1]=f[h+2]=255):f[h]=f[h+1]=f[h+2]=0}}return n.putImageData(a,0,0),{dropPoints:s,dropCount:o,cw:r,ch:i}}}();Animation=function(){"use strict";function e(e,t){e&&typeof e=="function"&&(i=e,s=t)}function t(e){return window.requestAnimationFrame?function(){window.requestAnimationFrame(e)}:window.msRequestAnimationFrame?function(){window.msRequestAnimationFrame(e)}:window.webkitRequestAnimationFrame?function(){window.webkitRequestAnimationFrame(e)}:window.mozRequestAnimationFrame?function(){window.mozRequestAnimationFrame(e)}:function(){setTimeout(e,o)}}function n(){i(s),u()}function r(){u=t(n),u()}var i,s,o=16.7,u;return{addFrameRenderer:e,start:r}}(),Snowflakes=function(){"use strict";function e(e,n){var r=new Image;r.onload=function(){for(var i=0;i<h;i++){var s=document.createElement("canvas");s.width=p,s.height=d;var a=s.getContext("2d");a.drawImage(r,i*p,0,p,d,0,0,p,d),c.push(s)}e&&(u=e),n||(o=[]);for(var i=0;i<u;i++)o.push(t())},r.src=l}function t(){var e=Math.random()*(E-w)+w,t=Math.random()*v.width,n=Math.random()*v.height;return{x:t,y:n,vv:Math.random()*(g-m)+m,hv:Math.random()*(b-y)+y,sw:e*p,sh:e*d,hsw:e*p*.5,hsh:e*d*.5,mhd:Math.random()*(x-S)+S,hd:0,hdi:Math.random()/(b*S),o:Math.random()*(N-T)+T,oi:Math.random()/C,si:Math.ceil(Math.random()*(h-1)),nl:!1}}function n(e){P.globalAlpha=e.o,P.drawImage(c[e.si],0,0,p,d,e.x,e.y,e.sw,e.sh)}function r(){for(var e=0;e<o.length;e++){var t=o[e],r=parseInt(t.x+t.hsw),i=parseInt(t.y+t.hsh);if(j[r]&&j[r][i]&&!F[r][i]){var s=0;F[r]&&F[r][i-1]&&(s+=1),F[r+1]&&F[r+1][i-1]&&(s+=1),F[r+1]&&F[r+1][i]&&(s+=1),F[r+1]&&F[r+1][i+1]&&(s+=1),F[r]&&F[r][i+1]&&(s+=1),F[r-1]&&F[r-1][i+1]&&(s+=1),F[r-1]&&F[r-1][i]&&(s+=1),F[r-1]&&F[r-1][i-1]&&(s+=1);if(s*Math.random()<1){F[r][i]=1,n(t),t.y=0,t.x=Math.random()*v.width;continue}}t.y+=t.vv*A,t.x+=(t.hd+t.hv)*A,t.hd+=t.hdi;if(t.hd<-t.mhd||t.hd>t.mhd)t.hdi=-t.hdi;t.o+=t.oi;if(t.o>N||t.o<T)t.oi=-t.oi;t.o>N&&(t.o=N),t.o<T&&(t.o=T);var u=!1;t.y>v.height+d/2&&(t.y=0,u=!0),t.y<0&&(t.y=v.height,u=!0),t.x>v.width+p/2&&(t.x=0,u=!0),t.x<0&&(t.x=v.width,u=!0),u&&(t.nl=!1)}}function i(e){r(),e.clearRect(0,0,e.canvas.width,e.canvas.height);for(var t=0;t<o.length;t++){var n=o[t];e.globalAlpha=n.o,e.drawImage(c[n.si],0,0,p,d,n.x,n.y,n.sw,n.sh)}}function s(t){var n="position:absolute;left:0;top:0;z-index:100001;pointer-events: none;";v.width=t.cw,v.height=t.ch,e(t.flakeCount),D=document.createElement("canvas"),H=document.createElement("canvas"),D.style.cssText=n,H.style.cssText=n,document.body.appendChild(D),document.body.appendChild(H),P=D.getContext("2d"),B=H.getContext("2d"),D.width=H.width=t.cw,D.height=H.height=t.ch,j=t.dropPoints,F=t.dropCount,I=t.maxPointDrop,Animation.addFrameRenderer(i,B),Animation.start()}var o=[],u=1,a=.1,f=2,l="http://p8.qhimg.com/d/inn/43158a81/Snowflakes.png",c=[],h=5,p=20,d=20,v={},m=1,g=4,y=-1,b=3,w=.2,E=1.25,S=2,x=3,T=.2,N=.9,C=50,k=60,L=0,A=1,O=.1,M=1.5,_=.05,D,P,H,B,j,F,I;return{init:s}}(),html2canvas([document.body],{onrendered:function(e){try{var t=detectEdge(e);t.flakeCount=200,Snowflakes.init(t)}catch(n){}}});
插件代码,来源未知

 

demo:

JavaScript实现飘雪积雪特效,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。