这里讲解的是一个简单的幻灯片效果,先贴上代码,后面讲解
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>幻灯片</title>
<style>
* {
margin: 0;
padding: 0;
}
.wraper {
width: 400px;
margin: auto;
overflow: hidden;
margin-top: 100px;
}
.wraper ul {
width: 1200px;
list-style: none;
overflow: hidden;
}
.wraper ul li {
width: 400px;
float: left;
}
.wraper ul li img {
width: 100%;
vertical-align: top;
}
</style>
<script type="text/javascript" src="js/jquery-1.9.0.min.js"></script>
<script type="text/javascript" src="js/iscroll.js"></script>
<script type="text/javascript">
var i = 0;
var myScroll;
function loaded() {
$('#imgScroll').append("<li><img src='img/2.jpg'></li>");
$('#imgScroll').append("<li><img src='img/3.jpg'></li>");
var width = $("#wrapper").width();//获取屏幕宽度
var num = $("#wrapper ul li").length;//获取幻灯片的个数
$("#wrapper ul").width(width * num);//设置ul的宽度
$("#wrapper ul li").width(width);//设置每个幻灯片的宽度
myScroll = new IScroll('#wrapper', {
disableMouse: false,
disablePointer: false,
scrollX: true,
momentum: false,
snap: 'li'
});
var timer = setInterval(startScroll, 3000);
};
function startScroll() {
i++;
if (i == $("#wrapper li").length) { //当滚动到最后一张,回到第一张
myScroll.goToPage(0, 0, 300); //回第一页
i = 0;
} else {
myScroll.next(); //滚到下一页
}
}
</script>
</head>
<body οnlοad="loaded()">
<div class="wraper" id="wrapper">
<ul id="imgScroll">
<li><img src="img/1.jpg "></li>
</ul>
</div>
</body>
</html>
如果你想先看效果的话可以把上面的代码拷贝下来,把里面的资源路径稍作更改就可以正常使用了,下面开始讲解:
幻灯片原理:
上图是我画的一个简单的原理图,ul中放置了4个条目,当然在屏幕中只能看到一个,当用手指向左滑动的时候,ul就向左移动一个li
,当向右滑动的时候,ul就向右移动一个li。我们的实例程序中还加入了每隔3秒自动向右滚动一张的功能,当滚动到最右边一张的时候,回到第一张重新循环。
1、样式代码就不讲解了,只是为示例代码随便写的,先看body部分,body中是iScroll最简单的结构了,如果你对iScroll一点都不了解的话,可以先看看 iScroll5的入门
2、填充数据,ul中先写入了一个li,其余的是用js动态加入的,当页面加载完毕后会执行loaded()方法,为了模拟从网络上获取图片资源效果,我在这里动态添加了2张图片,然后给ul和li设置样式,代码中都有注释,和我上面画的图对比着看可能有助于你理解。
3、参数的讲解,数据填充结束后,开始新创建了一个myScroll对象,初始化了一些配置,其中:
disableMouse:监听鼠标事件,默认为false,我是做的手机app所以给禁止掉了,其实无所谓,只是为了讲解添加上去的
disablePointer:监听指针事件,默认是监听的,很多浏览器上是无效的
scrollX:默认情况下只有纵向滚动条可以使用。如果你需要使用横向滚动条,需要把此属性设置为true
momentum:势能动画,其实就是滚动时候的惯性效果,默认值为true
snap:这个属性在这里很重要,是否要分页的意思,幻灯片都是一张一张的显示,所以要选择分页,可以设置其为true,iScroll会自动检测需要分页的标签,也可以直接设置需要分页的标签名,示例中设置的是'li'。
4、做完上面3步的工作其实代码就可以实现左右滑动切换幻灯片了,比如软件第一次运行的时候有几个对软件介绍的页面可以左右滑动,就可以用这个来实现。但是大部分情况下的幻灯片都是可以自己切换显示的,所以我们又创建了一个定时器
var timer = setInterval(startScroll, 3000);
这样我们就创建出来了一个循环定时器,每隔3000毫秒执行一次startScroll方法。类似的定时器还有延时定时器setTimeout(startScroll,500);功能是500毫秒后执行
startScroll方法,只运行一遍。
到此我们的简易幻灯片就完成了,我们还可以给幻灯片的底部添加上小圆点以表示显示到哪一页了。
可能遇到的问题:
在上下滚动的iScroll中嵌套了一个水平滚动的幻灯片,但是上下的iScroll就不能滚动了,这个以后再讲,今天就写到这里了