切屏动画原理

  1. 以四图全屏切屏为例,首先需要制作一个大的div宽高分别为100%,即全屏显示。
  2. 然后制作4个子元素,依次放入4张图片,并且设置图片的宽高同父级的一样。如下图:

image.png

  1. 将父级元素整体向上移动一屏之后,将显示出第2张图片,依次方法显示第3、第4张图片
  2. 即现实切屏。如下图:

image.png

  1. 代码如下:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>切屏动画</title>
  5. <meta charset="utf-8" />
  6. <style type="text/css">
  7. html,body{
  8. width:100%;
  9. height:100%;
  10. margin:0px;
  11. overflow:hidden;
  12. }
  13. #mainDiv{
  14. position:relative;
  15. left:0px;
  16. top:0px;
  17. width:100%;
  18. height:100%;
  19. transition:all 1s ease;
  20. }
  21. #mainDiv div{
  22. width:100%;
  23. height:100%;
  24. background-repeat:no-repeat;
  25. background-position:center;
  26. background-size:cover;
  27. }
  28. .page1{
  29. background-image:url("/res/htmlclassics/full/images/131.jpg");
  30. }
  31. .page2{
  32. background-image:url("/res/htmlclassics/full/images/132.jpg");
  33. }
  34. .page3{
  35. background-image:url("/res/htmlclassics/full/images/133.jpg");
  36. }
  37. .page4{
  38. background-image:url("/res/htmlclassics/full/images/134.jpg");
  39. }
  40. .btn_list{
  41. position:fixed;
  42. top:30%;
  43. right:50px;
  44. }
  45. ul{
  46. list-style-type:none;
  47. }
  48. li{
  49. width:20px;
  50. height:20px;
  51. margin-top:10px;
  52. border-radius:20px;
  53. background-color:#3D3D3D;
  54. cursor:pointer;
  55. }
  56. #li0{
  57. background-color:#10508D;
  58. }
  59. </style>
  60. <script type="text/javascript">
  61. var index = 0;//当前显示第几屏。0代表第1屏
  62. window.onload = function(){
  63. //为li添加鼠标点击事件
  64. for(var i=0;i<=3;i++){
  65. document.getElementById("li"+i).onclick = function(){
  66. index = this.id.replace("li","");//通过id获取当前显示第几屏
  67. pageAnimate();
  68. }
  69. }
  70. //窗口大小重置
  71. window.onresize = function(){
  72. //暂时去掉mainDiv的过渡动画
  73. document.getElementById("mainDiv").style.transition = "all 0s ease";
  74. pageAnimate();//切屏
  75. //重新加上mainDiv的过渡动画
  76. window.setTimeout(function(){
  77. document.getElementById("mainDiv").style.transition = "all 1s ease";
  78. },10);
  79. }
  80. }
  81. //设置显示哪一屏,并设置右浮动按扭显示样式
  82. function pageAnimate(){
  83. var offsetHeight = document.body.offsetHeight;
  84. document.getElementById("mainDiv").style.top = -(offsetHeight * index)+"px";
  85. //设置右则浮动按扭的显示样式
  86. for(var i=0;i<=3;i++){
  87. document.getElementById("li"+i).style.backgroundColor = "#3D3D3D";
  88. }
  89. document.getElementById("li"+index).style.backgroundColor = "#10508D";
  90. }
  91. </script>
  92. </head>
  93. <body>
  94. <div id="mainDiv">
  95. <div class="page1"></div>
  96. <div class="page2"></div>
  97. <div class="page3"></div>
  98. <div class="page4"></div>
  99. </div>
  100. <div class="btn_list">
  101. <ul>
  102. <li id="li0"></li>
  103. <li id="li1"></li>
  104. <li id="li2"></li>
  105. <li id="li3"></li>
  106. </ul>
  107. </div>
  108. </body>
  109. </html>