• 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.效果图如下,可根据自己需求修改样式,已经进度条进度时间,进度曲线等~~

                                                                                                                                                                                                                                                                                                                                                                                                                         

  • 相关阅读:
    centos7 挂载未分配的硬盘空间 (测试可用)
    虚拟化下Centos7 扩容根分区
    Centos7 虚拟机挂载未分配的空间
    Linux下对LVM逻辑卷分区大小调整 [针对xfs和ext4文件系统]
    XFS vs EXT4
    虚拟化下Centos7 扩容根分区
    centos7下扩展根分区(图文详解)
    解决删除镜像时image is referenced in multiple repositories
    linux 根目录扩容方法
    Linux系统扩容根目录磁盘空间的操作方法
  • 原文地址:https://www.cnblogs.com/imMeya/p/11358573.html
Copyright © 2020-2023  润新知