Angular Предварительно Bootstrap анимация возможна в другом потоке или выполняется асинхронно? - PullRequest
2 голосов
/ 16 апреля 2020

Есть ли способ показать анимацию предварительной загрузки в отдельном потоке, пока angular не загрузится полностью? Я обнаружил, что анимация очень нервная и не плавная. Я посмотрел в консоли и анимация обновляется только между загрузкой скриптов. Если для загрузки скрипта требуется некоторое время, анимация останавливается

Например, эта анимация останавливается, когда следующие скрипты загружают main. js, styles. js и особенно vendor. js где это зависает от 1 до 2 секунд. Как показано на следующем фото

Scripts

  <!doctype html>
    <html lang="en">
    <head>
      <meta http-equiv="x-ua-compatible" content="IE=edge">
      <meta charset="utf-8">
      <title>My Application</title>
      <base href="/">

      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="icon" type="image/x-icon" href="favicon.ico">
      <style>
        app-root {
        display: flex;
        justify-content: center;
        align-items: center;
        height: 100vh;

        color: #fff;
        text-transform: uppercase;
        font-family: -apple-system,
          BlinkMacSystemFont,
          "Segoe UI",
          Roboto,
          Oxygen-Sans,
          Ubuntu,
          Cantarell,
          Helvetica,
          sans-serif;
        font-size: 2.5em;
        text-shadow: 2px 2px 10px rgba(0, 0, 0, 0.2);
      }

      body {
        transition: opacity 0 ease-in-out 1s;
        background: darkgray;
        margin: 0;
        padding: 0;
      }

      @keyframes dots {
        50% {
          transform: translateY(-.4rem);
        }
        100% {
          transform: translateY(0);
        }
      }
      .d {
        animation: dots 1.5s ease-out infinite;
      }
      .d-2 {
        animation-delay: .9s;
      }

      .d-3 {
        animation-delay: 1s;
      }
    </style>
    Loading<span class="d">.</span><span class="d d-2">.</span><span class="d d-3">.</span>
  </app-root>
    </body>
    </html>

1 Ответ

0 голосов
/ 19 апреля 2020

Вы используете преобразования, которые теоретически должны использовать отдельный поток от пользовательского интерфейса, поэтому он не должен блокироваться JS.

В CSS вы можете попробовать использовать свойство will-change для вашей анимации. Перечислите указанные c свойства, которые будут меняться следующим образом:

.element {
    will-change: transform, opacity;
}

will-change означает, что свойства элемента будут изменены, так что браузер сможет сделать соответствующие приготовления.

Использование воли-изменения потребляет ресурсы, имейте в виду, что чрезмерное использование может привести к дальнейшим проблемам с производительностью. По умолчанию ставить его перед каждой анимацией не рекомендуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...