移动端的 开机动画

  • <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  • height: 100%; overflow: hidden; 禁止滚动条
  • 初始包含块 为 #wrap ,即设置 position: relative;
  • 包裹设置 width 和 height,给 img 设置 width: 100%;
  • (相对来说)项目当前的进度 = 图片加载成功的个数 / 图片的总数  = 加载条的 进度

    • js,css,font,依赖包,都加载比较快 , img 加载慢,近乎决定了项目加载速度(window.onload)
    • img 在使用的时候才会加载
    • 创建一个数组保存图片的路径
      • data.js

        • /**** data.js ****/
          var imgPath = {
          logo:["./img/logo/logo1.png", "./img/logo/logo2.png"],
          pageBg:["./img/bg1.jpg", "./img/bg2.jpg"],
          loadIcon:["./img/load/ico1.png", "./img/load/ico2.png"]
          }; // imgPath.logo[1]
          // imgPath[logo][1]
      • index.js
        • <script type="text/javascript" src="./js/data.js"></script>
          
          <script type="text/javascript">
          var imgArr = []; // 保存项目的图片路径 for(var attr in imgPath){
          // 每个数组 imgPath[attr]; // 将 imgPath[attr] 的元素放入 imgArr 中
          // 合并 imgArr 和 imgPath[attr]
          imgArr = imgArr.concat(imgPath[atrr]);
          }
          </script> /****
          var arr1 = [1,2];
          var arr2 = [3,4,5]; arr1.concat(arr2); // arr1[1,2]; arr2[3,4,5];
          arr1 = arr1.concat(arr2);
          ****/
    • var img = new Image();        // 项目中,创建 <img src="" /> 的方式

      • // 只要 img 图片加载成功,就会触发 img.onload 事件
        var imgCount; // 项目进度 = 图片加载成功数 / 要加载的图片总数
        for(var i=0; i<imgArr.length; i++){
        var img = new Image();
        img.src = imgArr[i]; img.onload = function(){
        imgCount += 1;
        tips.innerHTML = "已加载"+
        Math.round(imgCount/imgArr.length*100)+
        "%";
        };
        };
  • <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8"/>
    <title></title> <meta http-equiv="X-UA-Compatible" content="ie=edge"/>
    <meta name="viewport"
    content="user-scalable=no,
    width=device-width,
    initial-scale=1.0,
    minimum-scale=1.0,
    maximum-scale=1.0"/> <style rel="stylesheet" type="text/css">
    html, body, div, ul, li {
    margin: 0;
    padding: 0;
    } html, body {
    width: 100%;
    height: 100%; /* 参照屏幕区域的高 */
    min-width: 600px;
    overflow: hidden;
    } #wrap {
    width: 100%;
    min-height: 100%; background: cadetblue;
    } #content {
    width: 100%; padding-bottom: 50px; font-size: 14px;
    background: darkgrey;
    } #footer {
    width: 100%;
    height: 50px; margin-top: -50px; background: chocolate;
    text-align: center;
    line-height: 50px;
    } /**** Loading Animation ****/
    #loading_box {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    transform-style: preserve-3d;
    perspective: 300px; background-color: #ccc0;
    } /**** Rotating Tips ****/
    #loading_tips {
    margin-bottom: 10px; font-size: 48px;
    text-align: center;
    animation: rotateLetter 3s infinite alternate;
    }
    @keyframes rotateLetter {
    from {
    transform: rotateY(-30deg);
    }
    to {
    transform: rotateY(30deg);
    }
    } /**** Floating Words ****/
    #loading_animation {
    list-style: none;
    background-color: #bbb0;
    } #loading_animation li:last-child {
    margin-right: 0px;
    } #loading_animation li {
    float: left; margin-right: 10px;
    animation: jumpLetter 3s infinite alternate;
    }
    @keyframes jumpLetter {
    from {
    transform: translateY(0px);
    } to {
    transform: translateY(-15px);
    }
    }
    </style>
    </head> <body> <!-- 模拟屏幕区域 -->
    <div id="wrap"> <!-- 内容区域 -->
    <div id="content">
    <div id="loading_box">
    <div id="loading_tips">
    </div>
    <ul id="loading_animation">
    <li>L</li>
    <li>o</li>
    <li>a</li>
    <li>d</li>
    <li>i</li>
    <li>n</li>
    <li>g</li>
    </ul>
    </div>
    </div>
    </div> <!-- 底部区域 -->
    <div id="footer"> </div> <script type="text/javascript" src="./js/index.js"></script>
    <script type="text/javascript" src="./js/data.js"></script>
    <script type="text/javascript">
    var lis = document.querySelectorAll("#loading_animation li"); var colorArr = ["red", "green", "blue"];
    var i = 0;
    for(i=0; i<lis.length; i++){
    lis[i].style.color = colorArr[i%3]; lis[i].style.animationDelay = i*100+"ms";
    } var loadingTips = document.getElementById('loading_tips'); //创建数组:保存项目的图片
    var imgArr = []; //保存图片加载成功的个数
    var index = 0; //把data中图片路径塞到imgArr中
    for(var i in imgData){ //枚举对象上的每一个属性
    imgArr = imgArr.concat(imgData[i])
    }; //项目进度 = 图片加载成功的个数 / 图片总数
    for(var i=0;i<imgArr.length;i++){
    //创建img
    var img = new Image();//创建图片对象 img.src = imgArr[i]; //图片加载成功
    img.onload = function () {
    index++; console.log(Math.round(index/imgArr.length*100));
    loadingTips.innerHTML = Math.round(index/imgArr.length*100)+'%';
    };
    }
    </script>
    </body>
    </html>

CSS3_移动端_开机动画的更多相关文章

  1. 开机logo以及两种修改开机动画方法

    Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式的图片,在Linux任意下执行(安装工具): sudo apt-get install pnmtoplainpm 2.在所 ...

  2. 安卓修改开机logo和开机动画的方法

    第一种和第二种方法亲测可用,安卓版本是4.2和安卓5.1均可.第二种方法待验证 以下三种方法 Android 开机其实总共会出现3个画面: 1.第一个就是 linux 系统启动,出现Linux小企鹅画 ...

  3. 设置安卓开机动画、开机logo

    我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件 先来讲讲这个文件结构:该zip解压后得到两个文件, 第一个目录存放了开机时播放的图片( ...

  4. Android开机动画、logo、字样的定制过程【转】

    本文转载自:http://blog.csdn.net/yinhaide/article/details/43668401 Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式 ...

  5. Android开机动画

    Android系统的开机动画可分为三个部分,kernel启动,init进程启动,android系统服务启动.这三个开机动画都是在一个叫做 帧缓冲区(frame buffer)的硬件设备上进行渲染绘制的 ...

  6. Android隐藏虚拟按键,关闭开机动画、开机声音

    /*********************************************************************** * Android隐藏虚拟按键,关闭开机动画.开机声音 ...

  7. 理论制作 Windows 开机动画

    第一次接触 Windows 开机动画是 2012 年,那时候魔方的版本号还是 3.12,魔方里面有个很酷炫狂霸拽的功能就是替换 Windows 7 的开机动画.一开始我是在IT之家论坛里下载开机动画, ...

  8. Android 开机动画启动过程详解

    Android 开机会出现3个画面: 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片): 2. Android平台启动初始化,出 ...

  9. 纯css做的安卓开机动画

    随着css3的发展,越来越多的负责绚丽的效果可以由纯css来完成了.用css3实现的动画效果丝毫不必js实现的逊色,而且浏览器对css渲染的速度远比js快,大多数时候css的体积也不js小.其中css ...

随机推荐

  1. mask rcnn

    Mask RCNN Mask RCNN 中主要改进是在faster rcnn中box regression 的branch 上加入mask prediction branch,能够得到点到点的预测. ...

  2. postfix - SPF 防发件人欺骗

    安装 perl 依赖: yum install perl-Mail-SPF perl-Sys-Hostname-Long 下载 SPF 插件工具: wget https://launchpad.net ...

  3. shiro登录认证

    新建maven文件create a simple project shiro.ini文件 [users] root=123456 log4j.properties log4j.rootLogger=I ...

  4. python向ftp上传文件,解决中文问题

    # coding: UTF-8 import os import sys import salt.client import salt.config import time from ftplib i ...

  5. LNMP环境搭建:Nginx安装、测试与域名配置

    Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件 2.编译安装Nginx (1)安装Nginx依赖函数库pcre pcre为“perl兼容正则表达 ...

  6. Xshell出现‘The remote SSH server rejected X11 forwarding request’解决办法

    当准备用Xshell进行远程连接的时候出现下面的情况: 那么跟着我来点击鼠标就ojbk了: 文件--->属性--->隧道 然后找打 把那个单选框的对号勾掉,然后点击确认就OK了!!

  7. 在CentOs7上部署Gunicorn

    Gunicorn 的作用与优点这里就不再赘述,如不知道你也不会找这些对吧? 正文 安装简单,直接使用pip即可 pip3 install gunicorn 昨日在 Centos 中想部署Gunicor ...

  8. setInterval动态时间处理

  9. unity读取txt,并且生成vector3的数组

    读取txt的脚本: public void ReadFileTX(){ var str = File.ReadAllText(Application.streamingAssetsPath + &qu ...

  10. vue 使用swiper的一些问题(页面渲染问题)

    //Swiper上下滚动初始化 swiper_init(){ this.$nextTick(function(){ var mySwiper = new Swiper ('.swiper-contai ...