1. 程式人生 > >焦點輪播圖(7)原生JS實現焦點輪播圖--完整程式碼

焦點輪播圖(7)原生JS實現焦點輪播圖--完整程式碼

輪播圖終於更完了,附上完整程式碼:
這裡寫圖片描述

<html>
	<head>
		<meta charset="utf-8" />
		<title>焦點輪播圖</title>
		<style type="text/css">
			*{ 
				margin: 0; padding: 0; text-decoration: none; 
			 }
			body{
				padding:20px;
			}
			#container{
				width:600px; height:392px; border:3px solid #333; overflow: hidden; position:relative;margin:0 auto; 
			}
			#list{
				width: 4200px; height: 400px; position: absolute; z-index: 1;
			}
			#list img{
				float:left;
			}
			#buttons{
				position: absolute; height: 10px; width: 100px; z-index: 2; bottom: 20px; left: 250px;
			}
			#buttons span{
				cursor: pointer; float: left; border:1px solid #fff; width: 10px; height: 10px; border-radius: 50%; background: #333; margin-right: 5px;
			}
			#buttons .on{
				background: orange;
			}
			.arrow{
				cursor: pointer; display: none; line-height: 30px; text-align: center; font-size: 36px; font-weight: bold; width: 40px; height: 40px; position: absolute; z-index: 2; top: 180px; background-color: RGBA(0,0,0,.5); color:white; 
			}
			.arrow:hover{
				background-color: RGBA(0,0,0,.7);
			}
			#container:hover .arrow{
				display:block;
			}
			#prev{
				left:20px;
			}
			#next{
				right: 20px;
			}
		</style>
		<script type="text/javascript">
			window.onload = function (){
				var container = document.getElementById('container');
				var list = document.getElementById('list');
				var buttons = document.getElementById('buttons').getElementsByTagName('span');
				var prev = document.getElementById('prev');
				var next = document.getElementById('next');
				var index = 1;//顯示第幾個小圓點
				var changed = false;//切換狀態值無切換
				var timer;
				
				function showButton(){//點亮小圓點
					for(var i = 0;i < buttons.length; i++){
						if (buttons[i].className == 'on'){
							buttons[i].className = '';
							break;
						}
					}
					buttons[index - 1].className = 'on';//改變classname改變小圓點的樣式
				}
				
				function change(offset){//切換函式
					changed = true;
					var newleft = parseInt(list.style.left) + offset;
					
					var time = 300;//位移總時間(ms)
					var interval = 10;//位移間隔時間
					var speed = offset/(time/interval);//每次的位移量   總偏移/次數
					
					function go(){
						if((speed < 0 && parseInt(list.style.left) > newleft)||(speed > 0 && parseInt(list.style.left) < newleft)){
							 list.style.left = parseInt(list.style.left) + speed + 'px';
					           setTimeout(go,interval);//每隔interval執行一次go
						}
					else{
					changed = false;
					list.style.left = newleft + 'px';
					
				    if(newleft > -600){//歸位
				    	list.style.left = -3000 + 'px';
				    }
				    if(newleft < -3000){
				    	list.style.left = -600 + 'px';
				        }
				      }
					}
					go();
				}
				
				function play(){//自動切換函式
					timer = setInterval(function(){
						next.onclick();
					},3000);
				}
				
				function stop(){//自動切換停止函式
					clearInterval(timer);
				}
				
				next.onclick = function() {//右箭頭點選事件
					if(index == 5){
						index = 1;
					}
					else{
						index += 1;
					}
					showButton();
					if(!changed){
						change(-600);
					}
				}
				
				prev.onclick = function() {//左箭頭點選事件
					if(index == 1){
						index = 5;
					}
					else{
						index -= 1;
					}
					showButton();
					if(!changed){
						change(600);
					}
				}
				
				//為小圓點新增點選事件
				for(var i =0; i <buttons.length; i++){
					buttons[i].onclick = function(){
						//判斷如果點選對應以開啟圖片,退出函式
						if(this.classname == 'on'){
							return;
						}
						//獲取自定義或動態屬性
					   var myindex = parseInt(this.getAttribute('index'));
					   var offset = -600 * (myindex - index);
					   
					   index = myindex;
					   showButton();
					   if(!changed){
					   	change(offset);
					   } 
					}
				}
				container.onmouseover = stop;//滑鼠移動到容器內停止自動切換
				container.onmouseout = play;//滑鼠在容器外執行自動切換
				
				play();
			}
		</script>
		
	</head>
	<body>
		<div id = "container">
			<div id = "list" style = "left:-600px;">
				<img src="img/5.jpg" alt="" />
				<img src="img/1.jpg" alt="" />
				<img src="img/2.jpg" alt="" />
				<img src="img/3.jpg" alt="" />
				<img src="img/4.jpg" alt="" />
				<img src="img/5.jpg" alt="" />
				<img src="img/1.jpg" alt="" />	
			</div>
			<div id = "buttons">
				<span index="1" class="on"></span>
				<span index="2"></span>
				<span index="3"></span>
				<span index="4"></span>
				<span index="5"></span>
			</div>
			<a href="javascript:;" class="arrow" id="prev">&lt;</a>
			<a href="javascript:;" class="arrow" id="next">&gt;</a>
		</div>
	</body>
</html>