javascript面向对象编程类似tab的轮播图片

  
  
  
  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2. <html xmlns="http://www.w3.org/1999/xhtml"> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>无标题文档</title> 
  6. <style> 
  7. div,ul,li{ list-style:none; margin:0; padding:0;} 
  8. img{ border:none;} 
  9. .slider{ width:634px; height:230px; overflow:hidden; margin:50px auto 0; position:relative;} 
  10. .imgMarquee{ position:absolute; left:0; top:0; z-index:10;} 
  11. .list{ position:absolute; z-index:100; top:200px; right:20px;} 
  12. .list li{ float:left; display:inline; width:24px; height:20px; overflow:hidden; border:1px solid #F66; margin:0 4px; color:#fff; font-size:20px; line-height:20px; text-align:center; 
  13.  background:#969;} 
  14. .list li.current{ font-size:22px; height:22px; line-height:22px; background:red;} 
  15. </style> 
  16. <script src="base.js"></script> 
  17. </head> 
  18.  
  19. <body> 
  20.     <div class="slider" id="slider"> 
  21.         <div class="imgMarquee"> 
  22.             <img  src="01.jpg" width="630" height="230" class="timg"/> 
  23.             <img  src="02.jpg" width="634" height="230" class="timg"/> 
  24.             <img  src="03.gif" width="634" height="230" class="timg"/> 
  25.         </div> 
  26.         <ul class="list"> 
  27.             <li class="plist">1</li> 
  28.             <li class="plist">2</li> 
  29.             <li class="plist">3</li> 
  30.         </ul> 
  31.     </div> 
  32.   <script src="index.js"></script> 
  33.  <script type="text/javascript"> 
  34.     var imgWrap = getElementsByClassName("timg"), 
  35.         lists = getElementsByClassName("plist"), 
  36.         slider = document.getElementById("slider"); 
  37.     var test = new Marquee({imgWrap : imgWrap,lists : lists,slider : slider}); 
  38.     test.Start(); 
  39.  </script> 
  40. </body> 
  41. </html> 

base.js

 

  
  
  
  
  1. function getElementsByClassName(className,context){ 
  2.         context = context || document; 
  3.         if(context.getElementsByClassName){ 
  4.             return context.getElementsByClassName(className);    
  5.         } 
  6.         var nodes = context.getElementsByTagName("*"),ret=[];//获取页面上的所有节点 
  7.         for(var i=0;i<nodes.length;i++){   //遍历所有的节点 
  8.             if(hasClass(nodes[i],className)) ret.push(nodes[i]); 
  9.         }    
  10.         return ret; 
  11.     } 
  12.      
  13. //检查有没有类 
  14. function hasClass(node,className){ 
  15.     var names = node.className.split(/\s+/);//正则表达式所有的类名用空格分开    
  16.     //遍历这个类名 
  17.     for(var i=0;i<names.length;i++){ 
  18.         if(names[i]==className) 
  19.             return true;     
  20.         } 
  21.         return false;    
  22.     } 
  23.          
  24. /** 
  25. 参数说明 
  26. curTime 当前时间 即动画已经进行了多长时间 开始时间为0 
  27. start : 开始值 
  28. dur : 动画持续多长时间 
  29. alter : 总的变化量 
  30. */ 
  31. function animate(o,start,alter,dur,fx){ 
  32.     var curTime=0; 
  33.     var t = setInterval(function(){ 
  34.         if(curTime>=dur) clearInterval(t); 
  35.         for(var i in start){ 
  36.             o.style[i] = fx(start[i],alter[i],curTime,dur) + "px";   
  37.         } 
  38.         curTime+=50; 
  39.     },50)    
  40.     return function(){ 
  41.         clearInterval(t);    
  42.     }; 
  43.  
  44. function Linear(start,alter,curTime,dur){ 
  45.     return start + curTime/dur * alter;  
  46.     //最简单的线性变化 即匀速运动     
  47. //加速运动 
  48. function Quad(start,alter,curTime,dur){ 
  49.     return start + Math.pow(curTime/dur,2)*alter;    
  50.  function addClass(obj,className){   
  51.      obj.className+=" " +className;     
  52.      return obj;   
  53. function delClass(obj,className){   
  54.     var s = obj.className.split(/\s+/);//正则把类名分开   
  55.     for(var i=0;i<s.length;i++){   
  56.     if(s[i]==className){   
  57.     delete s[i];       
  58.     }      
  59.     }   
  60.     obj.className = s.join(" ");   
  61.     return obj;   
  62. }  
  63. function addEvent(obj,type,fn,status){ 
  64.     if(obj.addEventListener){ 
  65.         obj.addEventListener(type,fn,false); 
  66.     }else
  67.         obj.attachEvent("on"+type,function(){ 
  68.             fn.call(obj); 
  69.         }) 
  70.     } 

js

 

  
  
  
  
  1. // JavaScript Document 
  2.  
  3. function Marquee(config){ 
  4.     this.imgWrap = config.imgWrap; 
  5.     this.lists = config.lists; 
  6.     this.slider = config.slider; 
  7.     this.playTime = config.playTime || 3000; 
  8.     this.currentIndex = 0; 
  9.     this.currentClass = config.currentClass || "current"
  10.     this.lists[0].className +=" " +this.currentClass; 
  11.     var t; 
  12.     var that = this
  13.     for(var t=0;t<this.lists.length;t++){ 
  14.         this.lists[t]._index = t; 
  15.         addEvent(this.lists[t],'mouseover',function(){ 
  16.             that.showItem(this._index);  
  17.             this.currentIndex = this._index;     
  18.         })   
  19.     } 
  20.     this.slider.onmouseover = function(){ 
  21.         that.Stop();     
  22.     } 
  23.     this.slider.onmouseout = function(){ 
  24.         that.Start();    
  25.     } 
  26.      
  27. Marquee.prototype = { 
  28.     Start : function(){ 
  29.         var that = this
  30.         t = setInterval(function(){ 
  31.             that.PlayNext();     
  32.         },this.playTime);    
  33.     }, 
  34.     PlayNext : function(){ 
  35.         if(this.currentIndex >= this.lists.length){ 
  36.             this.currentIndex = 0;   
  37.         } 
  38.         this.showItem(this.currentIndex); 
  39.         this.currentIndex++;     
  40.     }, 
  41.     Stop : function(){ 
  42.         clearInterval(t); 
  43.     }, 
  44.     showItem : function(n){ 
  45.         for(var i=0;i<this.imgWrap.length;i++){ 
  46.             this.imgWrap[i].style.display = "none";  
  47.         } 
  48.         this.clearClass(); 
  49.         addClass(this.lists[n],this.currentClass); 
  50.         this.imgWrap[n].style.display = "block"
  51.         }, 
  52.         clearClass : function(){ 
  53.         for(var k=0;k<this.lists.length;k++){ 
  54.             if(hasClass(this.lists[k],this.currentClass)){ 
  55.                 delClass(this.lists[k],this.currentClass); 
  56.                 } 
  57.             } 
  58.     }    

 

你可能感兴趣的:(JavaScript,职场,休闲)