Angular2的Pre-Bootstrap加载屏幕

net*_*der 37 angular

我正在寻找一个沿着这个例子的行的预启动加载屏幕,但是对于Angular2.

dfs*_*fsq 73

我可以建议一个简单的CSS方法.

首先将.loadingdiv 添加到主HTML页面,它应该遵循主app组件元素.例如:

<my-app></my-app>

<div class="loading">
    <h1>Loading...</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

现在,您可以使用my-app:empty + .loadingCSS选择器定位和设置启动画面样式,并在应用程序获得引导后立即消失.例:

/* default .loading styles, .loading should be invisible, opacity: 0, z-index: -1 */
.loading {
    opacity: 0;
    transition: opacity .8s ease-in-out;
    position: fixed;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    background: #000;
    z-index: -1;
}
/* .loading screen is visible when app is not bootstrapped yet, my-app is empty */
my-app:empty + .loading {
    opacity: 1;
    z-index: 100;
}
Run Code Online (Sandbox Code Playgroud)

如果你在关闭body标签之前放置所有重的脚本并且只为头部的加载屏幕留下必要的最小样式,这种方法会更好,所以它会尽快显示,然后脚本开始加载.

这是一个简单的演示:

演示: http ://plnkr.co/edit/v8FtkSluRDSrkcq4v7a1?p = preview

  • 这太复杂了.您可以通过在<app> </ app>中包含需要在启动画面上显示的内容来简化方法:例如<app>正在加载... </ app>,这就是全部.一旦加载Angular,Angular将自动将实际内容替换为"Loading ...".还要记住,在加载Angular之前,将显示启动画面的目标.出于这个原因,ngAnimate或任何Angular特定的东西都不起作用 - 或者工作得太晚......关于你的"跳跃"应用程序,你应该在显示任何东西之前先找出你想去的地方. (8认同)
  • @ChristopheVidal你所建议的问题以及为什么我决定不在我的答案中这样做(我先尝试这种明显的方法)是你在这种情况下无法使用CSS过渡.如果您需要静态闪屏,那么当然它会更好.我的解决方案更通用. (4认同)

Rod*_*ney 18

我使用FontAwesome微调器采用了一种简单的方法(我也喜欢其他答案):

<app-root>
    <div class="text-center">
        <i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
        <div>Something witty for your userbase</div>
    </div>
</app-root>
Run Code Online (Sandbox Code Playgroud)

  • 嗨,您是否发现此加载微调器未在移动设备上显示?我这样做了,移动设备从未显示过.我得到白色屏幕然后应用程序显示.你做了什么事来解决这个问题吗? (2认同)

Odu*_*gun 8

为什么不尝试这种方法:

<app-root>
    <style type="text/css">
        #pre-bootstrap {
            background-color: #262626;
            bottom: 0px;
            left: 0px;
            position: fixed;
            right: 0px;
            top: 0px;
            z-index: 999999;
        }

        #pre-bootstrap div.messaging {
            color: #FFFFFF;
            font-family: monospace;
            left: 0px;
            margin-top: -37px;
            position: absolute;
            right: 0px;
            text-align: center;
            top: 50%;
        }

        #pre-bootstrap h1 {
            font-size: 26px;
            line-height: 35px;
            margin: 0px 0px 20px 0px;
        }

        #pre-bootstrap p {
            font-size: 18px;
            line-height: 14px;
            margin: 0px 0px 0px 0px;
        }
  </style>

  <div id="pre-bootstrap">
    <div class="messaging">
        <h1>
            App is Loading
        </h1>

        <p>
            Please stand by for your ticket to awesome-town!
        </p>

      </div>
   </div>
</app-root>
Run Code Online (Sandbox Code Playgroud)