xisuchi 发表于 2013-1-15 02:16:37

跟随鼠标的时钟,超酷的效果

<SCRIPT language=javascript>   dCol='cc0000';//date colour.   fCol='0099ff';//face colour.   sCol='ff0000';//seconds colour.   mCol='0099ff';//minutes colour.   hCol='0099ff';//hours colour.   ClockHeight=40;   ClockWidth=40;   ClockFromMouseY=0;   ClockFromMouseX=100;   //Alter nothing below! Alignments will be lost!   d=new Array("SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY");   m=new Array("JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER");   date=new Date();   day=date.getDate();   year=date.getYear();   if (year < 2000) year=year+1900;   TodaysDate=" "+d+" "+day+" "+m+" "+year;   D=TodaysDate.split('');   H='...';   H=H.split('');   M='....';   M=M.split('');   S='.....';   S=S.split('');   Face='1 2 3 4 5 6 7 8 9 10 11 12';   font='tahoma';   size=1;   speed=0.6;   ns=(document.layers);   ie=(document.all);   Face=Face.split(' ');   n=Face.length;   a=size*10;   ymouse=0;   xmouse=0;   scrll=0;   props="<font face="+font+" size="+size+" color="+fCol+">";   props2="<font face="+font+" size="+size+" color="+dCol+">";   Split=360/n;   Dsplit=360/D.length;   HandHeight=ClockHeight/4.5   HandWidth=ClockWidth/4.5   HandY=-7;   HandX=-2.5;   scrll=0;   step=0.06;   currStep=0;   y=new Array();x=new Array();Y=new Array();X=new Array();   for (i=0; i < n; i++){y=0;x=0;Y=0;X=0}   Dy=new Array();Dx=new Array();DY=new Array();DX=new Array();   for (i=0; i < D.length; i++){Dy=0;Dx=0;DY=0;DX=0}   if (ns){   for (i=0; i < D.length; i++)   document.write('<layer name="nsDate'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props2+D+'</font></center></layer>');   for (i=0; i < n; i++)   document.write('<layer name="nsFace'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props+Face+'</font></center></layer>');   for (i=0; i < S.length; i++)   document.write('<layer name=nsSeconds'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+sCol+'><center>'+S+'</center></font></layer>');   for (i=0; i < M.length; i++)   document.write('<layer name=nsMinutes'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+mCol+'><center>'+M+'</center></font></layer>');   for (i=0; i < H.length; i++)   document.write('<layer name=nsHours'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+hCol+'><center>'+H+'</center></font></layer>');   }   if (ie){   document.write('<div id="Od" style="position:absolute;top:0px;left:0px"><div style="position:relative">');   for (i=0; i < D.length; i++)   document.write('<div id="ieDate" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props2+D+'</font></div>');   document.write('</div></div>');   document.write('<div id="Of" style="position:absolute;top:0px;left:0px"><div style="position:relative">');   for (i=0; i < n; i++)   document.write('<div id="ieFace" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props+Face+'</font></div>');   document.write('</div></div>');   document.write('<div id="Oh" style="position:absolute;top:0px;left:0px"><div style="position:relative">');   for (i=0; i < H.length; i++)   document.write('<div id="ieHours" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+hCol+';text-align:center">'+H+'</div>');   document.write('</div></div>');   document.write('<div id="Om" style="position:absolute;top:0px;left:0px"><div style="position:relative">');   for (i=0; i < M.length; i++)   document.write('<div id="ieMinutes" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+mCol+';text-align:center">'+M+'</div>');   document.write('</div></div>')   document.write('<div id="Os" style="position:absolute;top:0px;left:0px"><div style="position:relative">');   for (i=0; i < S.length; i++)   document.write('<div id="ieSeconds" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+sCol+';text-align:center">'+S+'</div>');   document.write('</div></div>')   }   (ns)?window.captureEvents(Event.MOUSEMOVE):0;   function Mouse(evnt){   ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;   xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;   }   (ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;   function ClockAndAssign(){   time = new Date ();   secs = time.getSeconds();   sec = -1.57 + Math.PI * secs/30;   mins = time.getMinutes();   min = -1.57 + Math.PI * mins/30;   hr = time.getHours();   hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360; if (ie){   Od.style.top=window.document.body.scrollTop;   Of.style.top=window.document.body.scrollTop;   Oh.style.top=window.document.body.scrollTop;   Om.style.top=window.document.body.scrollTop;   Os.style.top=window.document.body.scrollTop;   }   for (i=0; i < n; i++){   var F=(ns)?document.layers['nsFace'+i]:ieFace.style;   F.top=y + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll;   F.left=x + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180);   }   for (i=0; i < H.length; i++){   var HL=(ns)?document.layers['nsHours'+i]:ieHours.style;   HL.top=y+HandY+(i*HandHeight)*Math.sin(hrs)+scrll;   HL.left=x+HandX+(i*HandWidth)*Math.cos(hrs);   }   for (i=0; i < M.length; i++){   var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes.style;   ML.top=y+HandY+(i*HandHeight)*Math.sin(min)+scrll;   ML.left=x+HandX+(i*HandWidth)*Math.cos(min);   }   for (i=0; i < S.length; i++){   var SL=(ns)?document.layers['nsSeconds'+i]:ieSeconds.style;   SL.top=y+HandY+(i*HandHeight)*Math.sin(sec)+scrll;   SL.left=x+HandX+(i*HandWidth)*Math.cos(sec);   }   for (i=0; i < D.length; i++){   var DL=(ns)?document.layers['nsDate'+i]:ieDate.style;   DL.top=Dy + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll;   DL.left=Dx + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180);   }   currStep-=step;   }   function Delay(){   scrll=(ns)?window.pageYOffset:0;   Dy=Math.round(DY+=((ymouse)-DY)*speed);   Dx=Math.round(DX+=((xmouse)-DX)*speed);   for (i=1; i < D.length; i++){   Dy=Math.round(DY+=(Dy-DY)*speed);   Dx=Math.round(DX+=(Dx-DX)*speed);   }   y=Math.round(Y+=((ymouse)-Y)*speed);   x=Math.round(X+=((xmouse)-X)*speed);   for (i=1; i < n; i++){   y=Math.round(Y+=(y-Y)*speed);   x=Math.round(X+=(x-X)*speed);   }   ClockAndAssign();   setTimeout('Delay()',20);   }   if (ns||ie)window.onload=Delay;   </SCRIPT>
页: [1]
查看完整版本: 跟随鼠标的时钟,超酷的效果