之前做过好几个项目vue都是pc端或者移动端网页上的,网站第一次打开都会出现白屏闪才进入应用,当然本身浏览器默认白色我们并不会在意这些细节,最近做到一个项目关于套壳app,把咋的vue项目套用的webview里,每次打开应用都会白屏下,那酸爽。次日老板在群里公开点名批评...有问题找前端是各岗位一致的共识....

       认真观察了下白屏产生的原理:原来是因为第一次进入时只有根目录默认的index.html资源啥的还未加载进来,尤其是弱网情况下。于是我们决定在index.html里做些什么...

1.在头部head里加入

<meta name="theme-color" content="#161d24" />

<style>
  #splash {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;

    /* background: #161D24 url(./splash.c106a.png) no-repeat center; */
    background-size: 80%;
    background-color: #161D24;
    background-repeat: no-repeat;
    background-position: center;
  }

</style>

2.body:在<div id="app"></div>前面加入<div id="splash"></div>,script里的是我自己根据项目中英文去加入默认背景图可不理

<body>
  <!-- 核心 --> 
  <div id="splash"></div>

  <div id="app"></div>
  <!-- built files will be auto injected -->
  <script type="text/javascript">
    (function () {
      // open web debugger console
      if (typeof VConsole !== 'undefined') {
        window.vConsole = new VConsole();
      }

      function GetQueryString(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = location.search.substr(1).match(reg);//search,查询?后面的参数,并匹配正则
        if (r != null) return unescape(r[2]); return null;
      }
      var lan = GetQueryString("lang") || "z_ch"

      var splash = document.getElementById('splash');
      splash.style.display = 'block';
      // if (lan == "en") {
      //   splash.style.backgroundImage = "url(./static/images/splash.png)";
      // } else {
      //   splash.style.backgroundImage = "url(./static/images/splash-zh.png)";
      // }

    })();
  </script>
</body>

 

 

效果:

简单的小修改,就可以避免那该死的白屏了,简单拥有仿app启动页,还可以加入加载动画以假乱真....

Logo

前往低代码交流专区

更多推荐