Як створити таймер зворотного відліку за допомогою JavaScript, CSS та SVG (4 способи)

Часто програмістам ставлять завдання створити таймер зворотного відліку, наприклад, коли у клієнта намічається важливий захід, розпродаж або він хоче запустити рекламну акцію. З погляду маркетингу, з таймерами зворотного відліку все зрозуміло: таймери здатні стимулювати продажі. Таймер зворотнього відліку – найкращий спосіб продемонструвати, що незабаром «карета перетвориться на гарбуз» і клієнту треба поквапитися. Використовуючи терміновість та обмеженість у часі, маркетологи спонукають клієнтів швидше робити покупки.

Хвилююче передчуття майбутньої події заразливе і захоплює всю вашу увагу. Можливо навіть, що це змушує вас нервувати і поспішати. Зворотній відлік зачаровує та змушує вас з нетерпінням дивитися, як відраховуються секунди до вихідних, весілля, канікул, Нового року чи виходу на пенсію.

В сьогоднішньому уроці ми розглянемо кілька варіантів створення простих таймерів зворотного відліку, які відраховуватимуть хвилини і секунди до якоїсь важливої ​​події.

 

Коли використовувати таймер зворотного відліку?

Ви можете використовувати таймери зворотного відліку для бізнес-пропозицій, в інтернет-магазині, під час розпродажів, для майбутнього вебінару.

Таймери зворотного відліку будуть доречними, коли потрібно:

  • нагадати, що розпродаж незабаром почнеться (або ж завершиться)
  • збільшити продажі
  • повідомити про закінчення терміну дії знижок
  • створити нагадування про завершення пробного періоду (trial)
  • нагадати студентам про час початку вебінару
  • підготувати до дати будь-якого розіграшу (наприклад, у лотереї)

 

 

Способи створення таймера зворотного відліку:

  • Використовувати «чистий» JavaScript або JavaScript бібліотеки (наприклад, jQuery)
  • Використовувати CSS та/або SVG
  • Скомбінувати способи: JavaScript + CSS + SVG

 

Тепер давайте на прикладах детальніше розглянемо кожен із цих способів.

 

Спосіб створення таймера зворотного відліку №1: на простому JavaScript

Ви можете створити годинник із зворотним відліком на чистому (vanilla) JavaScript і не шукати якогось навороченого плагіну. Ось лише в декількох рядках JavaScript коду приклад годинника зворотного відліку.

<style>
 /* трохи CSS стилів для оформлення таймеру */ #time-remainer {margin: 100px auto; width: 100%; position: relative; text-align: center; font-size: 25px;}
 #deadline-timer {color: red; font-weight: bold;}
</style>
<!-- показуємо таймер зворотного відліку в елементі нижче -->
<div id="time-remainer">Термін дії знижки закінчується через <span id="deadline-timer">05:00</span> <span id="min-or-sec">хвилин</span>!</div>
<script>
  var kilkistHvilin = 5;  // бажаний час таймера в хвилинах (5 хвилин)
  var potochniyChas = new Date(); // отримуємо сьогоднішню дату та час
  var deadlineTime = potochniyChas.setMinutes(potochniyChas.getMinutes() + 5); // встановлюємо таймер на 5 хвилин
  //var deadlineTime = new Date( new Date().getTime() + (kilkistHvilin * 60 * 1000) ); // можна і так встановити таймер на 5 хвилин
  // оновлюємо скрипт кожну секунду – так ми отримуємо зворотний відлік
  var zvorotniyVidlik = setInterval(function() {
    var zaraz = new Date().getTime(); // поточний час
    var zalishokChasu = deadlineTime - zaraz; // знаходимо різницю між поточним моментом і часом дедлайну
    // перетворюємо значення мілісекунд в хвилини та секунди
    var hvilini = Math.floor( (zalishokChasu % (1000 * 60 * 60)) / (1000 * 60) );
    var secundi = Math.floor( (zalishokChasu % (1000 * 60)) / 1000 );
    // якщо значення поточної хвилини або секунди менше 10, додаємо на початку провідний нуль
    hvilini = hvilini < 10 ? "0" + hvilini : hvilini;
    secundi = secundi < 10 ? "0" + secundi : secundi;
    // показуємо результат таймеру в елементі з id="deadline-timer"
    document.getElementById("deadline-timer").innerHTML = hvilini + ":" + secundi;
    // якщо в таймері залишилися лише секунди, змінюємо слово "хвилини" на "секунди"
    if (hvilini == 0) {
      document.getElementById("min-or-sec").innerHTML = "секунд";
    }
    // коли зворотний відлік закінчився, показуємо відповідне повідомлення
    if (zalishokChasu < 0) {
      clearInterval(zvorotniyVidlik);
      document.getElementById("time-remainer").innerHTML = "<h2>Час вичерпано!</h2>";
    }
  }, 1000);
</script>

Нижче представлено весь JavaScript код, а також демо цього способу.

 

 

Спосіб створення таймера зворотного відліку №2: на чистому CSS

Для даного способу використовується проста логіка – ми приховуємо за допомогою ключових кадрів (keyframes) CSS певні блоки з цифрами та показуємо інші. Наприклад, десяті частки секунди повинні змінюватися кожну секунду, відповідно тривалість анімації (animation-duration) має становити 60 секунд, а кількість ітерацій для даної анімації також становитиме 60 (60/60 = 1 секунда). Для хвилин математичні розрахунки анімації трохи складніші, але дотримуються такої ж логіки.

Нижче представлений весь HTML і CSS код, а також демо цього способу. У цьому прикладі таймер так само, як і в попередньому прикладі, встановлений на 5 хвилин.

 

 

Спосіб створення таймера зворотного відліку №3: комбінація SVG + CSS + JavaScript

У цьому прикладі використовується комбінація двох попередніх способів (CSS + JavaScript), а також використовується технологія SVG для візуального оформлення циферблата таймеру. Тут комірки кожної з цифр складаються з 7 фігур polygon, які за допомогою ключових кадрів (keyframes) CSS певний час показуються (або приховуються – за допомогою властивості прозорості для об’єкта SVG – fill-opacity). Таким чином, ми створюємо ілюзію включення/вимкнення циферблата таймера зворотного відліку. Кожна цифра має окрему послідовність CSS-анімації для кожної з 7 фігур polygon, відповідно для 4-значного циферблата (00:00) потрібно створити 28 анімацій. Оскільки наш таймер обмежений 5-ма хвилинами, перший, провідний хвилинний нуль не має анімацій, відповідно загальна кількість анімацій скорочується до 21.

Анімації задають зміну прозорості фігур через певний час (за допомогою характеристики тривалості анімації – animation-duration). Так, наприклад, одиничні секундні елементи повинні змінюватися кожну секунду (animation-duration: 10s;), десяткові секундні елементи змінюються раз на хвилину (animation-duration: 60s;) тощо.

Використання JavaScript в даному способі зведено до мінімуму – з його допомогою ми лише встановлюємо тайм-аут на 5 хвилин, щоб по їх закінченню показати відповідне повідомлення. Основну роботу тут виконують ключові кадри CSS, а за допомогою SVG фігур ми створюємо відмінно масштабований циферблат. От і все!

Нижче представлено весь HTML, SVG, CSS та JavaScript код, а також демо цього способу.

 

 

Короткий підсумок

Сподіваємося, що цей урок був для вас практично корисним! Спробуйте з урахуванням даних теоретичних основ створити свій, більш просунутий таймер зворотного відліку. Успішного кодування вам!

В якості бонусу нижче представлений простий таймер зворотного відліку, який показує час, що залишився до Нового року:

 

 

Share

Останні пости

4 способи пошуку нових ідей з допомогою Google Trends

Якщо у вас є свій блог та/або канал на YouTube, часом виникають ситуації, коли складно… Читати далі

20/01/2022

Йога для програмістів

Коли ти кажеш комусь, що ти програміст, у відповідь майже завжди чуєш: «А-а, у тебе… Читати далі

17/01/2022

Франсуа Гізо

Доки людина відчуває біль — вона жива. Доки людина відчуває чужий біль — вона людина… Читати далі

16/01/2022

Як швидко та просто створити CSS-анімацію, використовуючи спрайти

CSS-анімація давно та міцно завоювала визнання користувачів завдяки не тільки своїй простоті, але й можливостям.… Читати далі

14/01/2022

Найкрасивіші замки з усього світу (частина 1/5)

В давнину замки будувались для королів і королев з метою не тільки захисту їх володінь,… Читати далі

06/01/2022

З Новим 2022 Роком!

Вітаємо з Новим роком! Бажаємо вам, щоб усі епідемії, потрясіння та конфлікти залишилися в минулому,… Читати далі

31/12/2021