1. 程式人生 > >利用jquery實現多張圖片淡入淡出

利用jquery實現多張圖片淡入淡出

功能描述:

圖片播放分為2個順序:正序和反序,正序就是從第一張到最後一張,然後再第一張,反序是從第一張開始,然後最後一張,再到第一張。

1:當沒有滑鼠操作時,圖片正序播放,每隔特定時間播放一次。

2:如果滑鼠從左向右滑動,則圖片跳過間隔時間,播放順序強制切換為正序,立即播放至下一張。

3:如果滑鼠從右向左滑動,則圖片跳過間隔時間,播放順序強制切換為反序,立即播放至下一張。

實現思路:

把所有圖片放在同一位置,初始時只有第一張設為顯示,其他調為display:none.利用fadeToggle()函式實現圖片淡入淡出,利用setInterval()函式實現自動輪播,如果檢測到滑動事件,則clearInterval(),立即執行輪播函式,完成後開啟setInterval()。

程式碼如下:

<!DOCTYPE html>  
<html>  
<head>  
<script src="jquery-3.2.1.min.js"></script>  
<script>  
var i = 0; 
window.reverse = false;	//預設為正序播放
$(document).ready(function(){  
   picGroup = [$("#div1"),$("#div2"),$("#div3"),$("#div4")]; 
  addlistener();
  ID = setInterval(show1,4000);  
    
}); 
function nextPicIndex()	//對全域性邊量i進行更改,改為當前博播放順序下的下一張圖片索引
{
	if(reverse == true)
	{
		if(i > 0)
		{
			i--;
		}
		else
		{
			i = 4 -1;
		}
	}
	else
	{
		if(i < 3)
		{
			i++;
		}
		else
		{
			i = 0;
		}
	}
} 
function show1(){         
   picGroup[i].fadeToggle(2000);  
   nextPicIndex();
   picGroup[i].fadeToggle(2000);     
} 
function addlistener()
{
	$("#slide").bind("mousedown",start);
} 
function start(event)
{
	if(event.button == 0)	//當滑鼠左鍵還是按下狀態時
	{
		X = event.pageX;
		Y = event.pageY;
		$("#slide").bind("mousemove",move);
		$("#slide").bind("mouseup",stop);
	}
	return false;	//很關鍵,取消執行瀏覽器預設事件,沒有這一步,該事件執行不了
}
function move(event)
{
	X1 = event.pageX;
	Y1 = event.pageY;
	return false;	//同樣取消瀏覽器預設事件
}
function stop()
{
	if(X1 - X > 50)	//滑動路程大於50,且為向右滑動
	{
		reverse = false; //正序
		clearInterval(ID); 	//停止當前的interval
		show1();	//立即執行一次圖片下一張播放
		ID = setInterval(show1,4000);	//重新開啟interval
	}
	else if(X1 - X < -50)//滑動路程大於50,且為向左滑動
	{
		reverse = true;	//反序
		clearInterval(ID);
		show1();
		ID = setInterval(show1,4000);
	}
	$("#slide").unbind("mousemove",move);	//左鍵鬆開,則接除繫結滑鼠移動事件
	$("#slide").unbind("mouseup",stop);		//和左鍵鬆開事件
}
</script>  
<style>  
div {  
	  position: absolute;  
	  left: 3px;  
	  top: 0px;  
	  width:800px;  
	  height:800px;  
	}  
</style>  
</head>  
  
<body>  
  <div id="slide" style="position: absolute;  left: 30px;  top: 20px; width:800px;  height:800px; " >
  	<div id="div1" style="background-color:red;"><img width = "800px" height = "600px" src="img/1.jpg"></img></div>  
  
	<div id="div2" style="display:none;background-color:green;"><img width = "800px" height = "600px" src="img/2.jpg"></img></div>  
	  
	<div id="div3" style="display:none;background-color:blue;"><img width = "800px" height = "600px" src="img/3.jpg"></img></div> 

	<div id="div4" style="display:none;background-color:blue;"><img width = "800px" height = "600px" src="img/4.jpg"></img></div> 
  </div>
</body>  

</html>