功能描述:
图片播放分为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>