用javascript实现图片轮播

有两点需要注意:

①css中的left属性不能用xxx.style.left获得,把该属性写在html中的style中就可以获得。

②自定义属性获取方法:

   如 <span index="2"></span>

可以用var currentIndex=parseInt(this.getAttribute('index'));获取,注意转化为数值。

效果为:


总的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>switcherDemo</title>
<style type="text/css">
   *{margin:0;padding:0;}
   .clearfix: after{ content:"";display:block;clear:both;}
   #banner{width:725px;height:360px;margin:0 auto;overflow:hidden;margin-top:50px;position:relative;}
   #banner:hover>.spanner_arrow #pre{background-color:rgba(10,10,10,0.3);}
   #banner:hover>.spanner_arrow #next{background-color:rgba(10,10,10,0.3);}
   #banner_imgs {width:5075px;height:360px;position:absolute;}  
   #banner_imgs img{width:725px;height:360px;display:inline-block;float:left;position:relative;}
   .banner_buttons{position:absolute;width:725px;text-align:center;bottom:5px;left:0px;}
   .banner_buttons span{width:20px;height:20px;background-color:rgba(20,20,20,0.3);
   display:inline-block;border-radius:20px;margin:2px 5px;}
   .banner_buttons .on{background-color:#F63;}
   #pre{width:50px;height:50px;float:left;background-color:rgba(10,10,10,0.1);text-align:center;line-height:50px;color:#FFF;cursor:pointer;position:absolute;left:10px;top:150px;}
   #next{width:50px;height:50px;float:right;background-color:rgba(10,10,10,0.1);text-align:center;line-height:50px;color:#FFF;cursor:pointer;position:absolute;right:10px;top:150px;}
   
</style>

<script type="text/javascript">
   window.οnlοad=function(){
	    var banner=document.getElementById('banner');
	    var pre=document.getElementById('pre');
		var next=document.getElementById('next');
		var banner_imgs=document.getElementById('banner_imgs');
		var buttons_list=document.getElementsByClassName('banner_buttons');
		var buttons= buttons_list.item(0).getElementsByTagName('span');		
		var index=1;
		var animated=false;
		var timer;
		function showButtons(){
		     for(var i=0;i<buttons.length;i++){
			     if(buttons[i].className=='on'){
				      buttons[i].className='';
					  break;	 
				}
			 }	  
			 buttons[index-1].className='on';
		}
		function animate(offset){
			animated=true;
			var newList= parseInt(banner_imgs.style.left)+offset;		
			function go(){
			    var time=500;
		        var interval=100;
			    var speed=offset/(time/interval);
				if((speed<0&&parseInt(banner_imgs.style.left)>newList)||(speed>0&&parseInt(banner_imgs.style.left)<newList)){
					 banner_imgs.style.left=parseInt(banner_imgs.style.left)+speed+'px';
				     setTimeout(go,interval);
				}
				else{
				   	banner_imgs.style.left=newList+'px';
					if(newList>-725){
						banner_imgs.style.left=-3625+'px';
			        }
			        if(newList<-3625){
						banner_imgs.style.left=-725+'px';	
			        }	
					animated=false;
				}

			}
			go();


	    }
		pre.onclick = function(){
				if(!animated){
				   if(index==1){
				   index=5;	
				   }
				   else{
				   index -= 1;
				   }
                   showButtons();
				   animate(725);
				}			
	    }
		next.onclick = function(){
			if(!animated){
			    if(index==5){
				   index=1;
				}
				else{
				  index += 1;
				}
		        showButtons();
				animate(-725);
			}
		     
	
		}
		for(var i=0;i<buttons.length;i++){
			 if(!animated){
		      buttons[i].οnclick=function(){
				 if(this.className=='on'){
				    return;	 
				 }				 
				 var currentIndex=parseInt(this.getAttribute('index'));
			     var offset=-725*(currentIndex-index);
				 
				 	 animate(offset);
				 	
			     index=currentIndex;
                 showButtons();	 
		       }
		    }
	   }
	   function play(){
		 timer = setInterval(function(){
			      next.onclick();
			   },3000);
	   }
	   function stop(){
	      clearInterval(timer); 
	   }
	   banner.οnmοuseοver=stop;
	   banner.onmouseout = play;
	   play(); 
  }
</script>
</head>
<body>
   <div id='banner' class="comWidth">
       <div id="banner_imgs" style="left:-725px;" class="clearfix">
           <a href="#"><img src="images/5.jpg" alt=""></a>
           <a href="#"> <img src="images/1.png" alt=""></a>
           <a href="#"><img src="images/2.jpg" alt=""></a>           
           <a href="#"><img src="images/3.jpg" alt=""></a>
            <a href="#"><img src="images/4.png" alt=""></a>
            <a href="#"><img src="images/5.jpg" alt=""></a>
            <a href="#"><img src="images/1.png" alt=""></a>
       </div>
       <div class="banner_buttons">
          <span index="1" class="on"></span>
          <span index="2"></span>
          <span index="3" ></span>
          <span index="4" ></span>
          <span index="5"></span>
       </div>
       <div class="spanner_arrow clearfix">
          <span id="pre"><</span>
          <span id="next">></span>
       </div>
   </div>

</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值