halo-theme-dream2.0-plus
Version:
1 lines • 5.17 kB
JavaScript
window.tagcloud=function(a,l){function f(e){var s=this;s.config=f._getConfig(e),s.box=s.config.element,s.fontsize=s.config.fontsize,s.radius=s.config.radius,s.depth=2*s.radius,s.size=2*s.radius,s.mspeed=f._getMsSpeed(s.config.mspeed),s.ispeed=f._getIsSpeed(s.config.ispeed),s.items=s._getItems(),s.direction=s.config.direction,s.keep=s.config.keep,s.active=!1,s.lasta=1,s.lastb=1,s.mouseX0=s.ispeed*Math.sin(s.direction*Math.PI/180),s.mouseY0=-s.ispeed*Math.cos(s.direction*Math.PI/180),s.mouseX=s.mouseX0,s.mouseY=s.mouseY0,s.index=-1,f._on(s.box,"mouseover",function(){s.active=!0}),f._on(s.box,"mouseout",function(){s.active=!1}),f._on(s.keep?a:s.box,"mousemove",function(e){var e=a.event||e,t=s.box.getBoundingClientRect();s.mouseX=(e.clientX-(t.left+s.box.offsetWidth/2))/5,s.mouseY=(e.clientY-(t.top+s.box.offsetHeight/2))/5});for(var t=0,i=s.items.length;t<i;t++)s.items[t].element.index=t,s.items[t].element.onmouseover=function(){s.index=this.index},s.items[t].element.onmouseout=function(){s.index=-1};f.boxs.push(s.box),s.update(s),s.box.style.visibility="visible",s.box.style.position="relative",s.box.style.overflow="hidden",s.box.style.margin="0",s.box.style.padding="0",s.box.style.whiteSpace="nowrap",s.box.style.minHeight="200px",s.box.style.maxHeight="260px",s.box.style.width="100%",s.box.style.aspectRatio="1 / 1";for(var o=0,n=s.items.length;o<n;o++)s.items[o].element.style.position="absolute",s.items[o].element.style.zIndex=o+1;s.isUpdating=!1,s.lastTime=0,s.frameInterval=1e3/60,function e(t){s.isUpdating||t-s.lastTime>=s.frameInterval&&(s.isUpdating=!0,s.update(s),s.isUpdating=!1,s.lastTime=t),requestAnimationFrame(e)}(0)}return f.boxs=[],f._set=function(e){if(-1===f.boxs.indexOf(e))return!0},Array.prototype.indexOf||(Array.prototype.indexOf=function(e){var t=this.length>>>0,s=Number(arguments[1])||0;for((s=s<0?Math.ceil(s):Math.floor(s))<0&&(s+=t);s<t;s++)if(s in this&&this[s]===e)return s;return-1}),f._getConfig=function(e){var t={fontsize:16,radius:60,mspeed:"normal",ispeed:"normal",direction:135,keep:!0};if("[object Object]"===Object.prototype.toString.call(e))for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s]);return t},f._getMsSpeed=function(e){return{slow:1.5,normal:3,fast:5}[e]||3},f._getIsSpeed=function(e){return{slow:10,normal:25,fast:50}[e]||25},f._getSc=function(e,t){var s=Math.PI/180;return[Math.sin(e*s),Math.cos(e*s),Math.sin(t*s),Math.cos(t*s)]},f._on=function(e,t,s,i){e.addEventListener?e.addEventListener(t,s,i):e.attachEvent?e.attachEvent("on"+t,s):e["on"+t]=s},f.prototype={constructor:f,update:function(){var e,t,s=this;if(s.active||s.keep||(s.mouseX=Math.abs(s.mouseX-s.mouseX0)<1?s.mouseX0:(s.mouseX+s.mouseX0)/2,s.mouseY=Math.abs(s.mouseY-s.mouseY0)<1?s.mouseY0:(s.mouseY+s.mouseY0)/2),e=-Math.min(Math.max(-s.mouseY,-s.size),s.size)/s.radius*s.mspeed,t=Math.min(Math.max(-s.mouseX,-s.size),s.size)/s.radius*s.mspeed,!(Math.abs(e)<=.01&&Math.abs(t)<=.01)){s.lasta=e,s.lastb=t;for(var i=f._getSc(e,t),o=s.box.offsetWidth,n=s.box.offsetHeight,a=0,l=s.items.length;a<l;a++){var m=s.items[a].x,r=s.items[a].y*i[1]+s.items[a].z*-i[0],u=s.items[a].y*i[0]+s.items[a].z*i[1],d=m*i[3]+u*i[2],u=u*i[3]-m*i[2];s.index===a?(s.items[a].scale=1,s.items[a].fontsize=18,s.items[a].alpha=1,s.items[a].element.style.zIndex=99):(m=s.depth/(s.depth+u),s.items[a].x=d,s.items[a].y=r,s.items[a].z=u,s.items[a].scale=m,s.items[a].fontsize=16,s.items[a].alpha=1.5*m-.5,s.items[a].element.style.zIndex=Math.ceil(10*m-5)),s.items[a].element.style.fontSize=s.items[a].fontsize+"px",s.items[a].element.style.left=s.items[a].x+(o-s.items[a].offsetWidth)/2+"px",s.items[a].element.style.top=s.items[a].y+(n-s.items[a].offsetHeight)/2+"px",s.items[a].element.style.filter="alpha(opacity="+100*s.items[a].alpha+")",s.items[a].element.style.opacity=s.items[a].alpha}}},_getItems:function(){for(var e,t=this,s=[],i=t.box.children,o=i.length,n=t.box.offsetWidth,a=t.box.offsetHeight,l=0;l<o;l++)(e={}).angle={},e.angle.phi=Math.acos((2*l+1)/o-1),e.angle.theta=Math.sqrt((o+1)*Math.PI)*e.angle.phi,e.element=i[l],e.offsetWidth=e.element.offsetWidth,e.offsetHeight=e.element.offsetHeight,e.x=1.5*t.radius*Math.cos(e.angle.theta)*Math.sin(e.angle.phi),e.y=1.5*t.radius*Math.sin(e.angle.theta)*Math.sin(e.angle.phi),e.z=1.5*t.radius*Math.cos(e.angle.phi),e.element.style.left=e.x+(n-e.offsetWidth)/2+"px",e.element.style.top=e.y+(a-e.offsetHeight)/2+"px",s.push(e);return s}},l.querySelectorAll||(l.querySelectorAll=function(e){var t,s=l.createElement("style"),i=[];for(l.documentElement.firstChild.appendChild(s),l._qsa=[],s.styleSheet.cssText=e+"{x-qsa:expression(document._qsa && document._qsa.push(this))}",window.scrollBy(0,0),s.parentNode.removeChild(s);l._qsa.length;)(t=l._qsa.shift()).style.removeAttribute("x-qsa"),i.push(t);return l._qsa=null,i}),function(e){for(var t=(e=e||{}).selector||".tagcloud",s=l.querySelectorAll(t),i=[],o=0,n=s.length;o<n;o++)e.element=s[o],f._set(e.element)&&i.push(new f(e));return i}}(window,document),document.addEventListener("DOMContentLoaded",function(){tagcloud({selector:".tagcloud .card-content",fontsize:16,radius:75,mspeed:"slow",ispeed:"slow",direction:45,keep:!1})});