fell_from_the_grace
@fell_from_the_grace

Как сделать простую предварительную загрузку сайта?

Хочу узнать, как сделать так, чтобы пока основное содержимое грузится, на весь экран была заставка, а потом она исчезала?

У меня есть готовый сайт, но из-за большого объема фотографий и в принципе самой информации он долго грузится. Поэтому и решила подумать над созданием скрывающего это на какое-то время элемента.
Как в html и CSS коде оформить это так, чтобы заставка загружалась первой, а потом секунд через 10 исчезала совсем?
  • Вопрос задан
  • 383 просмотра
Решения вопроса 1
Если нужно сделать прелоадер не по времени загрузки всех ассетов, а по таймеру подойдет следующий код
<div class="vk-preloader">
  <style type="text/css" scoped>
    .vk-preloader {
      position: absolute;
      left: 0;
      top: 0;
      right: 0;
      bottom: 0;
      background: #bbb;
      text-align: center;
      font-family: Helvetica, Arial, Verdana, Tahoma, sans-serif;
      font-size: 50px;
      font-weight: bold;
      color: #333;
    }

    .vk-preloader.hidden {
      opacity: 0;
      transition: opacity 2s;
    }

    .vk-preloader.none {
      display: none;
    }

  </style>

  Hello World
</div>
<script>
  const TIME_TO_WAIT = 4;
  const preloader = document.querySelector('.vk-preloader');
  const removePreloader = function() {
    preloader.classList.add("none");
    preloader.removeEventListener('transitionend', removePreloader);
  };
  const hidePreloader = function() {
    preloader.classList.add("hidden");
    preloader.addEventListener('transitionend', removePreloader);
  };
  if (preloader) {
    setTimeout(hidePreloader, TIME_TO_WAIT * 1000);
  }

</script>

Если нужно отслеживать загрузку всех ассетов то последние три строки нужно заменить
if (preloader) {
    window.addEventListener('load', (event) => {
      hidePreloader()
    });
  }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы