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

                                                                                                                                                                                                                                                                                                                                                                                                                         

  • 相关阅读:
    SceneBuilder 打不开 .fxml文件,只在任务栏显示
    JDK1.6 1.7 1.8 多版本windows安装 执行命令java -version 版本不变的问题
    新手根据菜鸟教程安装docker,从No package docker-io available开始遇到的坑...
    Linux安装mysql
    用Eclipse搭建ssh框架
    前端面试之vue相关的面试题
    前端面试之闭包理解
    HTML5新规范和CSS3新特性
    vue2.0项目创建之环境变量配置
    windows下SVN服务器搭建--VisualSVN与TortoiseSVN的配置安装
  • 原文地址:https://www.cnblogs.com/imMeya/p/11358573.html
Copyright © 2011-2022 走看看