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>
