终于解决了一点问题

来源:互联网 发布:通用版读书软件下载 编辑:程序博客网 时间:2024/06/09 19:40

 

      在个人网站的制作中,终于感受到css+div以及js都不是好驾驭的,今天解决了动态切换图片、动态改变css样式还有鼠标跟随。

下面是代码,同大家分享:

Code:
  1. // 动态切换css样式   
  2. function $(obj){   
  3.     return document.getElementById(obj);   
  4. }   
  5.   
  6. var skin={};   
  7. skin.addEvent=function(){   
  8.     var skins =$("skin").getElementsByTagName("li");   
  9.     for (i=0;i<skins.length;i++)   
  10.     {   
  11.         skins[i].onclick=function(){skin.setSkin(this.id.substring(5))};   
  12.     }   
  13. }   
  14.   
  15. skin.setCookie=function(n){   
  16.     var expires=new Date();   
  17.     expires.setTime(expires.getTime()+24*60*60*365*1000);   
  18.     var flag="Skin_Cookie="+n;   
  19.     document.cookie=flag+";expires="+expires.toGMTString();   
  20. }   
  21.   
  22. skin.readCookie=function(){   
  23.     var skin=0   
  24.     var mycookie=document.cookie;   
  25.     var name="Skin_Cookie";   
  26.     var start1=mycookie.indexOf(name+"=");   
  27.     if(start1==-1){   
  28.         skin=0;   
  29.     }   
  30.     else{   
  31.         var start=mycookie.indexOf("=",start1)+1;   
  32.         var end=mycookie.indexOf(";",start);   
  33.         if(end=-1){   
  34.             end=mycookie.length;   
  35.         }   
  36.         var values= unescape(mycookie.substring(start,end));   
  37.         if (values!=null)   
  38.         {   
  39.             skin=values;   
  40.         }   
  41.     }   
  42.     return skin;   
  43.        
  44. }   
  45.   
  46. skin.setSkin=function(n){   
  47.     var skins =$("skin").getElementsByTagName("li");   
  48.     skin.setCookie(n);   
  49.     $("cssfile").href="c"+n+".css";   
  50. }   
  51.   
  52. window.onload=function(){   
  53.     skin.setSkin(skin.readCookie());   
  54.     skin.addEvent();   
  55. }   
  56. //鼠标样式   
  57. var x,y;        //鼠标当前在页面上的位置   
  58. var step=10;    //字符显示间距,为了好看,step=0则字符显示没有间距   
  59. var flag=0;   
  60. var message=" Welcome to coobr!";       //跟随鼠标要显示的字符串   
  61. message=message.split("");  //将字符串分割为字符数组   
  62.   
  63. var xpos=new Array()        //存储每个字符的x位置的数组   
  64. for (k=0;k<message.length;k++) {   
  65.     xpos[k]=-50;   
  66. }   
  67. var ypos=new Array()        //存储每个字符的y位置的数组   
  68. for (k=0;k<message.length;k++) {   
  69.     ypos[k]=-50;   
  70. }   
  71.   
  72. for (k=0;k<message.length;k++) {  //动态生成显示每个字符span标记,   
  73.     //使用span来标记字符,是为了方便使用CSS,并可以自由的绝对定位   
  74.     document.write("<span id='span"+k+"' class='spanstyle' style='color:#999; z-index:2'>");   
  75.     document.write(message[k]);   
  76.     document.write("");   
  77. }   
  78.   
  79. if (document.layers){   
  80.     document.captureEvents(Event.MOUSEMOVE);   
  81. }   
  82.   
  83. function handlerMM(e){ //从事件得到鼠标光标在页面上的位置   
  84.     x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX;   
  85.     y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY;   
  86.     flag=1;   
  87. }   
  88.   
  89. function makesnake() {  //重定位每个字符的位置   
  90.     if (flag==1 && document.all) { //如果是IE   
  91.         for (k=message.length-1; k>=1; k--) {   
  92.             xpos[k]=xpos[k-1]+step;  //从尾向头确定字符的位置,每个字符为前一个字符“历史”水平坐标+step间隔,   
  93.             //这样随着光标移动事件,就能得到一个动态的波浪状的显示效果   
  94.             ypos[k]=ypos[k-1];  //垂直坐标为前一字符的历史“垂直”坐标,后一个字符跟踪前一个字符运动   
  95.         }   
  96.         xpos[0]=x+step //第一个字符的坐标位置紧跟鼠标光标   
  97.         ypos[0]=y   
  98.         //上面的算法将保证,如果鼠标光标移动到新位置,则连续调用makenake将会使这些字符一个接一个的移动的新位置   
  99.         // 该算法显示字符串就有点象人类的游行队伍一样,    
  100.        
  101.         for (k=0; k<=message.length-1; k++) {   
  102.             var thisspan = eval("span"+(k)+".style");  //妙用eval根据字符串得到该字符串表示的对象   
  103.             thisspan.posLeft=xpos[k];   
  104.             thisspan.posTop=ypos[k];   
  105.         }   
  106.     }   
  107.     else if (flag==1 && document.layers) {   
  108.         for (k=message.length-1; k>=1; k--) {   
  109.             xpos[k]=xpos[k-1]+step;   
  110.             ypos[k]=ypos[k-1];   
  111.         }   
  112.         xpos[0]=x+step;   
  113.         ypos[0]=y;   
  114.         for (k=0; k<=message.length-1; k++) {   
  115.             var thisspan = eval("document.span"+k);   
  116.             thisspan.left=xpos[k];   
  117.             thisspan.top=ypos[k];   
  118.         }   
  119.     }   
  120.     var timer=setTimeout("makesnake()",10)  //设置10毫秒的定时器来连续调用makesnake(),时刻刷新显示字符串的位置。   
  121. }   
  122. document.onmousemove = handlerMM;