Обратный отсчет на сайте своими руками

Создаем новый сайт – интернет-магазин новогодних елок. Клиентом была поставлена задача: сделать в том или ином виде обратный отчет, чтобы посетители сайта видели, сколько осталось времени до нового года.

Было принято решение не связываться с плагинами, а просто написать код, мини программу на JavaScript. И вот, что в результате получилось:

<!-- Блок для отображения таймера -->
<div id="newyear-countdown"                  <!-- это HTML-элемент, в него мы будем «вписывать» текст таймера -->
     style="text-align:center;               /* выравниваем текст по центру */
            font-size:22px;                  /* размер шрифта */
            font-weight:bold;                /* жирный шрифт */
            color:red;                       /* красный цвет текста */
            margin-top:30px;                 /* отступ СВЕРХУ 30px */
            margin-bottom:0;">               /* отступ СНИЗУ 0 — можно менять на свои значения */
</div>                                       <!-- закрываем блок -->

<script>                                     <!-- начинаем блок JavaScript-кода -->
document.addEventListener("DOMContentLoaded", function() {  // ждём, пока страница загрузит HTML; потом запускаем нашу функцию
  // Целевая дата: Новый год
  var targetDate = new Date("Jan 1, 2026 00:00:00").getTime(); // создаём дату "1 янв 2026 00:00:00" и берём время в миллисекундах

  function updateCountdown() {               // объявляем функцию, которая будет пересчитывать и выводить таймер
    var now = new Date().getTime();          // текущее время (в миллисекундах) на компьютере пользователя
    var diff = targetDate - now;             // сколько осталось до цели (разница в миллисекундах)

    var countdownEl = document.getElementById("newyear-countdown"); // находим наш DIV по id, чтобы в него писать текст

    if (diff <= 0) {                         // если время вышло (разница <= 0)
      countdownEl.innerHTML = "🎉 С Новым годом!";  // показываем поздравление
      clearInterval(timer);                  // останавливаем периодический пересчёт
      return;                                // выходим из функции, дальше ничего не считаем
    }

    var days = Math.floor(diff / (1000 * 60 * 60 * 24));            // целые дни до даты (делим миллисекунды на мс в сутках)
    var hours = Math.floor((diff % (1000 * 60 * 60 * 24)) /         // часы: берём остаток от суток и делим на мс в часе
                           (1000 * 60 * 60));
    var minutes = Math.floor((diff % (1000 * 60 * 60)) /            // минуты: остаток от часа делим на мс в минуте
                             (1000 * 60));
    var seconds = Math.floor((diff % (1000 * 60)) / 1000);          // секунды: остаток от минуты делим на мс в секунде

    countdownEl.innerHTML =                                         // собираем строку и вставляем в наш DIV
      "До нового года осталось: " + days + " дн " + hours + " ч " +
      minutes + " м " + seconds + " с";
  }

  updateCountdown();                           // сразу один раз посчитать и показать, не ждём секунду
  var timer = setInterval(updateCountdown, 1000); // запускаем пересчёт каждые 1000 мс (каждую секунду)
});
</script>                                      <!-- конец JavaScript -->

Этот код можно вставить в то место, где вы хотите вывести счетчик обратного отсчета. Например, если в WordPress мы хотим его видеть на самом верху страницы, то его надо разместить в нужном месте в файле header.php

Leave a Comment