Vue防止白屏添加首屏动画

单页应用有个无法避免的问题就是首屏加载慢,虽然可以通过<font color=red>gzip、路由懒加载、CDN、提高服务器带宽</font>等手段,首屏加载速度仍然比传统多页应用慢一些。

为了提高用户体验,首屏添加loading动画很有必要,并且实现特别简单。

vue-cli3生成的项目中,打开index.html会发现如下代码

<body>
  <noscript>
    <strong>We're sorry but doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
  </noscript>
  <div id="app"></div>
  <!-- built files will be auto injected -->

</body>

我们只需要在这个div中插入loading代码即可,vue初始化完成后会自动替换

<div id="app">此处插入loading代码</div>

以下是我实现的一种动画效果,可自行替换

image
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
  <link rel="stylesheet" type="text/css" href="//at.alicdn.com/t/font_1112431_q8oa3yvrwbh.css">
  <title>demo</title>
  <style>
    .spinner {
      margin: 100px auto;
      width: 50px;
      height: 60px;
      text-align: center;
      font-size: 10px;
    }

    .spinner > div {
      background-color: #FE3C71;
      height: 100%;
      width: 6px;
      display: inline-block;
      -webkit-animation: stretchDelay 1.2s infinite ease-in-out;
      animation: stretchDelay 1.2s infinite ease-in-out;
    }

    .spinner .rect2 {
      -webkit-animation-delay: -1.1s;
      animation-delay: -1.1s;
    }

    .spinner .rect3 {
      -webkit-animation-delay: -1.0s;
      animation-delay: -1.0s;
    }

    .spinner .rect4 {
      -webkit-animation-delay: -0.9s;
      animation-delay: -0.9s;
    }

    .spinner .rect5 {
      -webkit-animation-delay: -0.8s;
      animation-delay: -0.8s;
    }

    @-webkit-keyframes stretchDelay {
      0%, 40%, 100% {
        -webkit-transform: scaleY(0.4)
      }
      20% {
        -webkit-transform: scaleY(1.0)
      }
    }

    @keyframes stretchDelay {
      0%, 40%, 100% {
        transform: scaleY(0.4);
        -webkit-transform: scaleY(0.4);
      }
      20% {
        transform: scaleY(1.0);
        -webkit-transform: scaleY(1.0);
      }
    }
  </style>
</head>
<body>
<noscript>
  <strong>We're sorry but demo doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app">
  <div class="spinner">
    <div class="rect1"></div>
    <div class="rect2"></div>
    <div class="rect3"></div>
    <div class="rect4"></div>
    <div class="rect5"></div>
  </div>
</div>
<!-- built files will be auto injected -->
</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要招一个会vue的开发者: 作为面试官的你,你还会每次都只是问这些老土的问题吗?你对MVVM的理解是什么?你知道什...
    浪子神剑阅读 23,125评论 0 260
  • 只要你是天鹅蛋,就是生在养鸡场里也没有什么关系。 你现在努力奋斗的样子 大抵可以预见60岁后的模样 女人永远新鲜的...
    叶娜姐姐阅读 355评论 3 4
  • 旅途中,,, 大概到江西了吧,一场由南到北的征程,穿过拥挤的人潮,在春运的大军中奉献自己的一份力量,火车上,两个小...
    懒猫咪阅读 181评论 0 1
  • 2018年08月11日 星期六 天气 晴 今天是厦小暑假第二次返校日,早上6点半就带了俩宝贝去学校。今天是学校...
    言書9130阅读 451评论 1 6