GSP DEVELOPMENT
Загружаем сайт
0%
Сайты
Чат-боты
Приложения
Tilda
на Tilda

Экран загрузки (Прелоадер)

Как сделать интерактивную карту на Tilda

С помощью этой модификации можно добавить на сайт CSS-прелоадер, который появляется при открытии страницы, показывает анимацию загрузки, выводит текст и счётчик процентов, а после полной загрузки сайта плавно исчезает. Прелоадер не нужно собирать в Zero Block, он создаётся кодом.

Как добавить прелоадер на сайт:
  1. Заходим в "Настройки сайта"
  2. "Вставка кода"
  3. у настройки "Html-код для вставки внутрь HEAD" нажимаем "Редактировать код"
  4. Вставляем код:
<!-- Разработано GSP Development -->
<style>
:root {
  /* Настройки цветов прелоадера */
  --preloader-bg: #6f00ff;       /* Фиолетовый фон */
  --preloader-accent: #ffffff;    /* Цвет спиннера */
  --preloader-text: #ffffff;      /* Основной текст */
  --preloader-muted: rgba(255,255,255,.65); /* Проценты */
}

.css-preloader {
  position: fixed;
  inset: 0;
  z-index: 9999999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--preloader-bg);
  opacity: 1;
  visibility: visible;
  transition: opacity .65s ease, visibility .65s ease;
}

.css-preloader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.css-preloader__content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  font-family: inherit;
  text-align: center;
}

.css-preloader__spinner {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background:
    conic-gradient(
      from 0deg,
      transparent 0deg,
      transparent 90deg,
      var(--preloader-accent) 360deg
    );
  -webkit-mask:
    radial-gradient(farthest-side, transparent calc(100% - 10px), #000 calc(100% - 9px));
  mask:
    radial-gradient(farthest-side, transparent calc(100% - 10px), #000 calc(100% - 9px));
  animation: cssPreloaderSpin .85s linear infinite;
}

.css-preloader__text {
  font-size: 18px;
  font-weight: 700;
  color: var(--preloader-text);
}

.css-preloader__percent {
  font-size: 14px;
  font-weight: 600;
  color: var(--preloader-muted);
  letter-spacing: .08em;
}

@keyframes cssPreloaderSpin {
  to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
  .css-preloader__spinner { animation: none; }
  .css-preloader { transition: none; }
}
</style>

<script>
(function() {
  const MIN_SHOW_TIME = 900;
  const MAX_WAIT_TIME = 5000;
  const startTime = Date.now();
  let current = 0;
  let target = 0;

  // Создаём HTML прелоадера динамически
  const preloader = document.createElement("div");
  preloader.className = "css-preloader";
  preloader.innerHTML = `
    <div class="css-preloader__content">
      <div class="css-preloader__spinner"></div>
      <div class="css-preloader__text">Загружаем сайт</div>
      <div class="css-preloader__percent" id="cssPreloaderPercent">0%</div>
    </div>
  `;
  document.body.appendChild(preloader);

  const percent = document.getElementById("cssPreloaderPercent");

  function setPercent(value) {
    current = value;
    percent.textContent = Math.round(current) + "%";
  }

  function animatePercent() {
    current += (target - current) * 0.08;
    if(current < 99) percent.textContent = Math.round(current) + "%";
    requestAnimationFrame(animatePercent);
  }

  function fakeProgress() {
    if(target < 30) target += 1.8;
    else if(target < 65) target += 1.1;
    else if(target < 88) target += 0.45;
    else if(target < 96) target += 0.12;
    target = Math.min(target, 96);
    if(!preloader.classList.contains("is-hidden")) setTimeout(fakeProgress, 80);
  }

  function hidePreloader() {
    const elapsed = Date.now() - startTime;
    const delay = Math.max(0, MIN_SHOW_TIME - elapsed);
    setTimeout(() => {
      target = 100;
      percent.textContent = "100%";
      setTimeout(() => {
        preloader.classList.add("is-hidden");
        setTimeout(() => { preloader.remove(); }, 800);
      }, 250);
    }, delay);
  }

  animatePercent();
  fakeProgress();

  window.addEventListener("load", hidePreloader);
  setTimeout(hidePreloader, MAX_WAIT_TIME);
})();
</script>
Настройка под себя:ак менять цвета и текст:
  • Фон прелоадера: --preloader-bg
  • Цвет спиннера: --preloader-accent
  • Цвет текста: --preloader-text
  • Цвет процентов: --preloader-muted
  • Основной текст прелоадера меняется здесь:
<div class="css-preloader__text">Загружаем сайт</div>
Видеоинструкция (для тех, кому неудобно работать с текстом)