zoukankan      html  css  js  c++  java
  • css3实现loading效果--当页面加载过程中显示Loading的进度条,全部加载完成之后进度条消失

    一个页面等图片资源全部加载完成,会需要很长时间,用户体验会很差,所以我们需要loading来掩盖这个漫长的过程!

    emmm,定时器?写个定时器还要清除,万一造成内存泄露?定时器之间还会互相影响,呼呼呼那就不考虑了

    那么就用css写一个~~

    语法:

    animation: name duration timing-function delay iteration-count direction;

    @keyframes 规则用于创建动画。在 @keyframes 中规定某项 CSS 样式,就能创建由当前样式逐渐改为新样式的动画效果。

    1、设置进度条起始宽度0%,3s之内宽度移动85%,为什么不设置100%呢? 因为3s进度条就加载到100%,如果我们的页面却迟迟没有加载完成,那么完全影响用户体验,所以我们设置到85%就让进度条停了下来,然后页面加载完成之后隐藏进度条,实现以假乱真!

      /* loading */
          .loading {
            background: #000;
            position: absolute;
            z-index: 999;
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-direction: column;
          }
          .progress {
            position: relative;
            width: 200px;
            height: 8px;
            background: #fff;
            border-radius: 20px;
            margin-top: 20px;
          }
          .progress-bar {
            position: absolute;
            left: 0;
            top: 0;
            height: 8px;
            line-height: 20px;
            border-radius: 20px;
            background: #d7bb29;
            animation: animate-positive 3s;
          }
          @keyframes animate-positive { 
            from {width:0px;}
            to {width:85%;}
          }
          @-webkit-keyframes animate-positive {
            from {width:0px;}
            to {width:85%;}
          }

    2.js判断页面是否加载完成,使用一个document 的 Document.readyState 属性描述了文档的加载状态。complete / 完成文档和所有子资源已完成加载。表示 load状态的事件即将被触发

    当document.readyState == "complete",表示页面所有内容已被完全加载此时可以隐藏loading

     var loading = document.getElementById("loading");
          if (document.readyState == "complete") {
            // 页面加载完毕
             loading.style.display = "none";
          }

    3.附上demo

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>loading</title>
        <style>
          /* loading */
          .loading {
            background: #000;
            position: absolute;
            z-index: 999;
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-direction: column;
          }
          .progress {
            position: relative;
            width: 200px;
            height: 8px;
            background: #fff;
            border-radius: 20px;
            margin-top: 20px;
          }
          .progress-bar {
            position: absolute;
            left: 0;
            top: 0;
            height: 8px;
            line-height: 20px;
            border-radius: 20px;
            background: #d7bb29;
            animation: animate-positive 3s;
          }
          @keyframes animate-positive { 
            from {width:0px;}
            to {width:85%;}
          }
          @-webkit-keyframes animate-positive {
            from {width:0px;}
            to {width:85%;}
          }
          
        </style>
      </head>
      <body>
        <div id="loading" class="loading">
          <div class="progress">
            <div class="progress-bar">
            </div>
          </div>
        </div>
        <script>
          var loading = document.getElementById("loading");
          if (document.readyState == "complete") {
            // 页面加载完毕
    
           // loading.style.display = "none";
          }
        </script>
      </body>
    </html>

    4.效果图如下,可根据自己需求修改样式,已经进度条进度时间,进度曲线等~~

                                                                                                                                                                                                                                                                                                                                                                                                                         

  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/imMeya/p/11358573.html
Copyright © 2011-2022 走看看