1、切屏动画原理
以四图全屏切屏为例,首先需要制作一个大的div宽高分别为100%,即全屏显示。
然后制作4个子元素,依次放入4张图片,并且设置图片的宽高同父级的一样。如下图:
将父级元素整体向上移动一屏之后,将显示出第2张图片,依次方法显示第3、第4张图片,即现实切屏。如下图:
<!DOCTYPE html>
<html>
<head>
<title>切屏动画</title>
<meta charset="utf-8" />
<style type="text/css">
html,body{
width:100%;
height:100%;
margin:0px;
//去掉滚动条
overflow:hidden;
}
#mainDiv{
//绝对定位
position:relative;
left:0px;
top:0px;
//用百分比宽高时先设置html、body的宽高
width:100%;
height:100%;
//过度动画
transition:all 1s ease;
}
#mainDiv div{
width:100%;
height:100%;
//不平铺展示
background-repeat:no-repeat;
//图片位置居中显示
background-position:center;
//图片一直放大,直到占满整个屏幕
background-size:cover;
}
.page1{
background-image:url("http://www.yyfun001.com/res/htmlclassics/full/images/131.jpg");
}
.page2{
background-image:url("http://www.yyfun001.com/res/htmlclassics/full/images/132.jpg");
}
.page3{
background-image:url("http://www.yyfun001.com/res/htmlclassics/full/images/133.jpg");
}
.page4{
background-image:url("http://www.yyfun001.com/res/htmlclassics/full/images/134.jpg");
}
.btn_list{
//以浏览器窗口为定位
position:fixed;
//上边距
top:30%;
//右边距
right:50px;
}
ul{
//去掉小黑点
list-style-type:none;
}
li{
width:20px;
height:20px;
//每个li的上边距
margin-top:10px;
//圆角
border-radius:20px;
background-color:#3D3D3D;
//鼠标指针小手样式
cursor:pointer;
}
#li0{
background-color:#10508D;
}
</style>
<script type="text/javascript">
var index = 0;//当前显示第几屏。0代表第1屏
window.onload = function(){
//为li添加鼠标点击事件
for(var i=0;i<=3;i++){
document.getElementById("li"+i).onclick = function(){
//将本个li标签的id里的li替换成"",替换后的id为数字
index = this.id.replace("li","");//通过id获取当前显示第几屏
pageAnimate();
}
}
//窗口大小重置,从窗口图片出现错乱,如果再次点击按钮就正常了,所以窗口高度应重新计算
window.onresize = function(){
//暂时去掉mainDiv的过渡动画,大div有过渡动画,窗口改变时会有一小段切换的动画
document.getElementById("mainDiv").style.transition = "all 0s ease";
pageAnimate();//切屏
//重新加上mainDiv的过渡动画,如果直接写改变动画的效果,切换窗口大小还是会有一小段过渡动画
//利用定时器来添加这一过渡动画效果
window.setTimeout(function(){
document.getElementById("mainDiv").style.transition = "all 1s ease";
},10);
}
}
//设置显示哪一屏,并设置右浮动按扭显示样式
function pageAnimate(){
//一个页面的高度
var height = document.body.offsetHeight;
//切换图片
document.getElementById("mainDiv").style.top = -(height * index)+"px";
//设置右则浮动按扭的显示样式
for(var i=0;i<=3;i++){
document.getElementById("li"+i).style.backgroundColor = "#3D3D3D";
}
document.getElementById("li"+index).style.backgroundColor = "#10508D";
}
</script>
</head>
<body>
<div id="mainDiv">
<div class="page1"></div>
<div class="page2"></div>
<div class="page3"></div>
<div class="page4"></div>
</div>
<div class="btn_list">
<ul>
<li id="li0"></li>
<li id="li1"></li>
<li id="li2"></li>
<li id="li3"></li>
</ul>
</div>
</body>
</html>