В этой статье рассмотрим таймер обратного отсчета, построенный на чистом CSS и JavaScript. Он написан с использованием минимального количества кода без использования jQuery и каких-либо других сторонних библиотек.
Таймеры обратного отсчёта могут использоваться на сайтах для различных целей. Но в большинстве случаев они применяются для отображения времени, которое осталось до наступления какого-то крупного события: запуска нового продукта, рекламной акции, начала распродажи и т.д.
Демо таймера обратного отсчёта
Простой таймер обратного отсчета с днями, часами, минутами и секундами. Очень легко настраивается. Создан на чистом CSS и Javascript (без зависимостей).
Посмотреть
Подключение и настройка таймера
1. Вставить в нужное место страницы html-разметку таймера:
<div class="timer">
<div class="timer__items">
<div class="timer__item timer__days">00</div>
<div class="timer__item timer__hours">00</div>
<div class="timer__item timer__minutes">00</div>
<div class="timer__item timer__seconds">00</div>
</div>
</div>
Таймер обратного отсчета отображает четыре числа: дни, часы, минуты и секунды. Каждое число находится в элементе <div>
. Первый класс (timer__item
) используется для стилизации элемента, а второй — для таргетинга в JavaScript.
2. Добавить стили (базовое оформление):
.timer__items {
display: flex;
font-size: 48px;
}
.timer__item {
position: relative;
min-width: 60px;
margin-left: 10px;
margin-right: 10px;
padding-bottom: 15px;
text-align: center;
}
.timer__item::before {
content: attr(data-title);
display: block;
position: absolute;
left: 50%;
bottom: 0;
transform: translateX(-50%);
font-size: 14px;
}
.timer__item:not(:last-child)::after {
content: ':';
position: absolute;
right: -15px;
}
Стилизовать таймер обратного отсчета можно так как вы этого хотите.
Вышеприведённый CSS использует flexbox. Знак «:» и текст под каждым компонентом даты выводиться на страницу с помощью псевдоэлементов.
3. Добавить JavaScript:
document.addEventListener('DOMContentLoaded', function() {
// конечная дата, например 1 июля 2021
const deadline = new Date(2021, 06, 01);
// id таймера
let timerId = null;
// склонение числительных
function declensionNum(num, words) {
return words[(num % 100 > 4 && num % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][(num % 10 < 5) ? num % 10 : 5]];
}
// вычисляем разницу дат и устанавливаем оставшееся времени в качестве содержимого элементов
function countdownTimer() {
const diff = deadline - new Date();
if (diff <= 0) {
clearInterval(timerId);
}
const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0;
const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0;
const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0;
const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0;
$days.textContent = days < 10 ? '0' + days : days;
$hours.textContent = hours < 10 ? '0' + hours : hours;
$minutes.textContent = minutes < 10 ? '0' + minutes : minutes;
$seconds.textContent = seconds < 10 ? '0' + seconds : seconds;
$days.dataset.title = declensionNum(days, ['день', 'дня', 'дней']);
$hours.dataset.title = declensionNum(hours, ['час', 'часа', 'часов']);
$minutes.dataset.title = declensionNum(minutes, ['минута', 'минуты', 'минут']);
$seconds.dataset.title = declensionNum(seconds, ['секунда', 'секунды', 'секунд']);
}
// получаем элементы, содержащие компоненты даты
const $days = document.querySelector('.timer__days');
const $hours = document.querySelector('.timer__hours');
const $minutes = document.querySelector('.timer__minutes');
const $seconds = document.querySelector('.timer__seconds');
// вызываем функцию countdownTimer
countdownTimer();
// вызываем функцию countdownTimer каждую секунду
timerId = setInterval(countdownTimer, 1000);
});
4. Установить дату окончания. Например, до 1 июля 2021:
// конечная дата const deadline = new Date(2021, 06, 01);
Основную часть кода занимает функция countdownTimer
:
function countdownTimer() {
// ...
}
Эта функция выполняет расчёт оставшегося времени и обновляет содержимое элементов .timer__item
на странице.
Расчёт оставшегося времени осуществляется посредством вычитания текущей даты из конечной:
// new Date() - текущая дата и время
const diff = deadline - new Date();
Вычисление оставшегося количества дней, часов, минут и секунд выполняется следующим образом:
const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0;
const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0;
const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0;
const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0;
Встроенная функция Math.floor
используется для округления числа до ближайшего целого (посредством отбрасывания дробной части).
Вывод оставшегося времени на страницу:
$days.textContent = days < 10 ? '0' + days : days;
$hours.textContent = hours < 10 ? '0' + hours : hours;
$minutes.textContent = minutes < 10 ? '0' + minutes : minutes;
$seconds.textContent = seconds < 10 ? '0' + seconds : seconds;
$days.dataset.title = declensionNum(days, ['день', 'дня', 'дней']);
$hours.dataset.title = declensionNum(hours, ['час', 'часа', 'часов']);
$minutes.dataset.title = declensionNum(minutes, ['минута', 'минуты', 'минут']);
$seconds.dataset.title = declensionNum(seconds, ['секунда', 'секунды', 'секунд']);
Переменные $days
, $hours
, $minutes
, $seconds
содержат элементы (таргеты), в которые выводятся компоненты времени.
Изменение содержимого элементов выполняется через textContent
. Если значение меньше 10, то к нему добавляется символ «0».
Получение элементов (выполняется с помощью querySelector
):
// получаем элементы, содержащие компоненты даты
const $days = document.querySelector('.timer__days');
const $hours = document.querySelector('.timer__hours');
const $minutes = document.querySelector('.timer__minutes');
const $seconds = document.querySelector('.timer__seconds');
Функция declensionNum
используется для склонения числительных:
// склонение числительных
function declensionNum(num, words) {
return words[(num % 100 > 4 && num % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][(num % 10 < 5) ? num % 10 : 5]];
}
Для постоянного вычисления оставшегося времени и вывода его на страницу используется setInterval
.
Хранение идентификатора таймера осуществляется в переменной timerId
:
// id таймера
let timerId = null;
Использование setInterval
для запуска функции countdownTimer
каждую секунду:
// вызываем функцию countdownTimer каждую 1 секунду
timerId = setInterval(countdownTimer, 1000);
Остановка таймера по истечении времени выполняется в функции countdownTimer
:
function countdownTimer() {
...
if (diff <= 0) {
// останавливаем таймер timerId
clearInterval(timerId);
}
...
}
Скрипт для создания нескольких таймеров отчета на странице
Скрипт, написанный с использованием классов, который можно использовать для создания нескольких таймеров отчета на странице:
// класс для создание таймера обратного отсчета
class CountdownTimer {
constructor(deadline, cbChange, cbComplete) {
this._deadline = deadline;
this._cbChange = cbChange;
this._cbComplete = cbComplete;
this._timerId = null;
this._out = {
days: '', hours: '', minutes: '', seconds: '',
daysTitle: '', hoursTitle: '', minutesTitle: '', secondsTitle: ''
};
this._start();
}
static declensionNum(num, words) => {
return words[(num % 100 > 4 && num % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][(num % 10 < 5) ? num % 10 : 5]];
}
_start() {
this._calc();
this._timerId = setInterval(this._calc.bind(this), 1000);
}
_calc() {
const diff = this._deadline - new Date();
const days = diff > 0 ? Math.floor(diff / 1000 / 60 / 60 / 24) : 0;
const hours = diff > 0 ? Math.floor(diff / 1000 / 60 / 60) % 24 : 0;
const minutes = diff > 0 ? Math.floor(diff / 1000 / 60) % 60 : 0;
const seconds = diff > 0 ? Math.floor(diff / 1000) % 60 : 0;
this._out.days = days < 10 ? '0' + days : days;
this._out.hours = hours < 10 ? '0' + hours : hours;
this._out.minutes = minutes < 10 ? '0' + minutes : minutes;
this._out.seconds = seconds < 10 ? '0' + seconds : seconds;
this._out.daysTitle = CountdownTimer.declensionNum(days, ['день', 'дня', 'дней']);
this._out.hoursTitle = CountdownTimer.declensionNum(hours, ['час', 'часа', 'часов']);
this._out.minutesTitle = CountdownTimer.declensionNum(minutes, ['минута', 'минуты', 'минут']);
this._out.secondsTitle = CountdownTimer.declensionNum(seconds, ['секунда', 'секунды', 'секунд']);
this._cbChange ? this._cbChange(this._out) : null;
if (diff <= 0) {
clearInterval(this._timerId);
this._cbComplete ? this._cbComplete() : null;
}
}
}
Пример использования класса CountdownTimer()
для создания таймера на странице:
// 1. Получим элементы в которые нужно вывести оставшееся количество дней, часов, минут и секунд
const elDays1 = document.querySelector('.timer-1 .timer__days');
const elHours1 = document.querySelector('.timer-1 .timer__hours');
const elMinutes1 = document.querySelector('.timer-1 .timer__minutes');
const elSeconds1 = document.querySelector('.timer-1 .timer__seconds');
// 2. Установим время, например, на одну минуту от текущей даты
const deadline1 = new Date(Date.now() + (60 * 1000 + 999));
// 3. Создадим новый объект, используя new CountdownTimer()
new CountdownTimer(deadline1, (timer) => {
elDays1.textContent = timer.days;
elHours1.textContent = timer.hours;
elMinutes1.textContent = timer.minutes;
elSeconds1.textContent = timer.seconds;
elDays1.dataset.title = timer.daysTitle;
elHours1.dataset.title = timer.hoursTitle;
elMinutes1.dataset.title = timer.minutesTitle;
elSeconds1.dataset.title = timer.secondsTitle;
}, () => {
document.querySelector('.timer-1 .timer__result').textContent = 'Таймер завершился!';
});
В new CountdownTimer()
необходимо передать следующие аргументы:
- конечную дату в формате Date;
- функцию, которую нужно выполнять каждую секунду (её, например, можно использовать для обновления содержимого элементов, которые используются для отображения оставшегося времени);
- при необходимости функцию, которую нужно выполнить после завершения таймера.
HTML код первого таймера:
<div class="timer timer-1">
<div class="timer__items">
<div class="timer__item timer__days">00</div>
<div class="timer__item timer__hours">00</div>
<div class="timer__item timer__minutes">00</div>
<div class="timer__item timer__seconds">00</div>
</div>
<div class="timer__result"></div>
</div>
Инициализация остальных таймеров на странице с помощью new CountdownTimer()
выполняется аналогично.
Пример страницы, на которой имеется несколько таймеров обратного отсчёта:
Посмотреть
В статье рассказывается, как создать таймер на сайт, используя только HTML, CSS и JavaScript. Вот что мы хотим получить:
Основные функции таймера:
- Отображение оставшегося времени.
- Преобразование времени в формат MM:SS.
- Изменение цвета, когда оставшееся время приближается к нулю.
- Отображение оставшегося времени в виде анимированного кольца.
Пошаговая реализация:
- Шаг 1. Начните с базовой разметки и стилей
- Шаг 2. Настройка временной метки
- Шаг 3: Обратный отсчет
- Шаг 4: Перекрываем кольцо таймера другим кольцом
- Шаг 5. Анимация кольца прогресса
- Шаг 6: Изменение цвета в определенные моменты времени
Мы добавим svg с элементом circle внутри, чтобы нарисовать кольцо таймера. А также добавим интервал, чтобы показать оставшееся значение времени. Для этого мы вставляем JavaScript в HTML и включаем в DOM, указывая элемент #app.
document.getElementById("app").innerHTML = ` <div class="base-timer"> <svg class="base-timer__svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <g class="base-timer__circle"> <circle class="base-timer__path-elapsed" cx="50" cy="50" r="45" /> </g> </svg> <span> <!-- Remaining time label --> </span> </div> `;
Далее используем CSS, чтобы:
- Установить размер таймера обратного отсчета.
- Удалить заливку и обводку из элемента круга.
- Установить ширину и цвет кольца.
/* Устанавливаем высоту и ширину контейнера */ .base-timer { position: relative; height: 300px; width: 300px; } /* Удаляем стили SVG, которые могли бы скрыть временную метку */ .base-timer__circle { fill: none; stroke: none; } /* Контур SVG, который отображает прогресс времени */ .base-timer__path-elapsed { stroke-width: 7px; stroke: grey; }
В результате мы получили шаблон, который выглядит следующим образом.
HTML-код содержит пустой элемент <span> для отображения оставшегося время. Мы добавим сюда соответствующее значение в формате MM:SS с помощью метода formatTimeLeft.
function formatTimeLeft(time) { // Наибольшее целое число меньше или равно результату деления времени на 60. const minutes = Math.floor(time / 60); // Секунды – это остаток деления времени на 60 (оператор модуля) let seconds = time % 60; // Если значение секунд меньше 10, тогда отображаем его с 0 впереди if (seconds < 10) { seconds = `0${seconds}`; } // Вывод в формате MM:SS return `${minutes}:${seconds}`; }
После этого мы используем только что созданный метод в шаблоне.
document.getElementById("app").innerHTML = ` <div class="base-timer"> <svg class="base-timer__svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <g class="base-timer__circle"> <circle class="base-timer__path-elapsed" cx="50" cy="50" r="45"></circle> </g> </svg> <span id="base-timer-label" class="base-timer__label"> ${formatTime(timeLeft)} </span> </div> `
Чтобы вывести значение внутри кольца, нужно обновить стили.
// Начинаем с исходного значения в 20 секунд const TIME_LIMIT = 20; // Изначально осталось полное время интервала, но оно будет отсчитываться // и вычитаться из TIME_LIMIT let timePassed = 0; let timeLeft = TIME_LIMIT;
Теперь заставим таймер отсчитывать от 20 до 0.
У нас есть значение timeLimit, которое представляет собой начальное время. А также значение timePassed, которое указывает, сколько времени прошло с момента начала отсчета.
Увеличим значение timePassed на секунду и пересчитаем timeLeft с помощью функции setInterval. Для этого реализуем метод startTimer, который будет:
- Устанавливать интервал счетчика.
- Увеличивать значение timePassed каждую секунду.
- Пересчитывать значение timeLeft.
- Обновлять значение метки в шаблоне.
Сохраним ссылку на этот объект интервала в переменной timerInterval, чтобы очистить его при необходимости.
let timerInterval = null; document.getElementById("app").innerHTML = `...` function startTimer() { timerInterval = setInterval(() => { // Количество времени, которое прошло, увеличивается на 1 timePassed = timePassed += 1; timeLeft = TIME_LIMIT - timePassed; // Обновляем метку оставшегося времени document.getElementById("base-timer-label").innerHTML = formatTime(timeLeft); }, 1000); }
У нас есть метод, который запускает таймер обратного отсчета. С его помощью запустим таймер.
document.getElementById("app").innerHTML = `...` startTimer();
Теперь таймер отсчитывает время. Реализуем изменение цвета временной метки при различных значениях.
Чтобы визуализировать отсчет времени, добавим к кольцу второй слой, который будет обрабатывать анимацию. Для этого расположим новое зеленое кольцо поверх оригинального, чтобы получился своего рода индикатор выполнения.
Сначала добавим элемент path в SVG.
document.getElementById("app").innerHTML = ` <div class="base-timer"> <svg class="base-timer__svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <g class="base-timer__circle"> <circle class="base-timer__path-elapsed" cx="50" cy="50" r="45"></circle> <path id="base-timer-path-remaining" stroke-dasharray="283" class="base-timer__path-remaining ${remainingPathColor}" d=" M 50, 50 m -45, 0 a 45,45 0 1,0 90,0 a 45,45 0 1,0 -90,0 " ></path> </g> </svg> <span id="base-timer-label" class="base-timer__label"> ${formatTime(timeLeft)} </span> </div> `;
После этого добавим несколько стилей, чтобы круговая траектория выглядела как оригинальное серое кольцо. Важно, чтобы свойство stroke-width принимало значение, равное размеру исходного кольца. А также чтобы длительность transition была установлена на 1 секунду.
.base-timer__path-remaining { /* Такая же ширина, что и у исходного кольца */ stroke-width: 7px; /* Замыкаем концы линии, чтобы создать круг */ stroke-linecap: round; /* Делаем так, чтобы анимация начиналась вверху */ transform: rotate(90deg); transform-origin: center; /* Одна секунда подгоняется под таймер обратного отсчета */ transition: 1s linear all; /* Задаем смену цвета кольца, когда обновляется значение цвета */ stroke: currentColor; } .base-timer__svg { /* Переворачиваем кольцо и задаем движение анимации слева направо */ transform: scaleX(-1); }
Но кольцо таймера пока не анимируется.
Для анимации линии оставшегося времени мы будем использовать свойство stroke-dasharray.
Посмотрим, как будет выглядеть кольцо с различными значениями stroke-dasharray.
Свойство stroke-dasharray делит оставшееся кольцо времени на отрезки равной длины. Это происходит, когда мы задаем stroke-dasharray число от 0 до 9.
Посмотрим, как это свойство будет себя вести, если передать ему два значения: 10 и 30.
stroke-dasharray: 10 30
Это устанавливает длину первой секции (оставшегося времени) на 10, а второй секции (прошедшего времени) – на 30. Мы можем использовать это в нашем таймере обратного отсчета.
Нужно, чтобы кольцо покрыло всю окружность. То есть, оставшееся время равно длине окружности кольца.
Вычислить длину дуги можно по следующей формуле:
Length = 2πr = 2 * π * 45 = 282,6
Это значение используется при первоначальном наложении кольца.
stroke-dasharray: 283 283
Первое значение в массиве – это оставшееся время, а второе – прошедшее. Теперь нам нужно манипулировать первым значением. Вот что произойдет, когда изменяется первое значение.
Создадим метод для подсчета оставшейся доли начального времени. Еще один – для вычисления значения stroke-dasharray и обновление элемента <path>, представляющего оставшееся время.
// Делим оставшееся время на определенный временной лимит function calculateTimeFraction() { return timeLeft / TIME_LIMIT; } // Обновляем значение свойства dasharray, начиная с 283 function setCircleDasharray() { const circleDasharray = `${( calculateTimeFraction() * FULL_DASH_ARRAY ).toFixed(0)} 283`; document .getElementById("base-timer-path-remaining") .setAttribute("stroke-dasharray", circleDasharray); }
Также необходимо обновлять контур каждую секунду. Для этого вызовем метод setCircleDasharray внутри timerInterval.
function startTimer() { timerInterval = setInterval(() => { timePassed = timePassed += 1; timeLeft = TIME_LIMIT - timePassed; document.getElementById("base-timer-label").innerHTML = formatTime(timeLeft); setCircleDasharray(); }, 1000); }
Но анимация отстает на 1 секунду. Когда мы достигаем 0, все еще виден кусочек кольца.
Эту проблему можно решить, постепенно уменьшая длину кольца во время обратного отсчета в методе calculateTimeFraction.
function calculateTimeFraction() { const rawTimeFraction = timeLeft / TIME_LIMIT; return rawTimeFraction - (1 / TIME_LIMIT) * (1 - rawTimeFraction); }
Сначала добавим два порога, которые будут указывать, когда нужно добавить цвета для каждого из состояний. Начинаем с зеленого, затем переходим к оранжевому (в качестве предупреждения), а затем к красному, когда время почти истекло.
// Оповещение на 10 секунде const WARNING_THRESHOLD = 10; // Предупреждение на 5 секунде const ALERT_THRESHOLD = 5; const COLOR_CODES = { info: { color: "green" }, warning: { color: "orange", threshold: WARNING_THRESHOLD }, alert: { color: "red", threshold: ALERT_THRESHOLD } };
Теперь создадим метод, который будет отвечать за проверку превышения установленного порога и изменение цвета.
function setRemainingPathColor(timeLeft) { const { alert, warning, info } = COLOR_CODES; // Если оставшееся время меньше или равно 5, удаляем класс "warning" и применяем класс "alert". if (timeLeft <= alert.threshold) { document .getElementById("base-timer-path-remaining") .classList.remove(warning.color); document .getElementById("base-timer-path-remaining") .classList.add(alert.color); // Если оставшееся время меньше или равно 10, удаляем базовый цвет и применяем класс "warning". } else if (timeLeft <= warning.threshold) { document .getElementById("base-timer-path-remaining") .classList.remove(info.color); document .getElementById("base-timer-path-remaining") .classList.add(warning.color); } }
Мы удаляем один класс CSS, когда таймер обратного отсчета достигает определенной точки, и добавляем вместо него другой. Объявим эти классы.
.base-timer__path-remaining.green { color: rgb(65, 184, 131); } .base-timer__path-remaining.orange { color: orange; } .base-timer__path-remaining.red { color: red; }
Все готово. Ниже приводится полная демо-версия:
Те, кто занимается спортом, знают: часто нужен таймер. Кому-то надо отмерять интервалы по минуте, кому-то — сколько работаешь, столько отдыхаешь; кому-то нужны сложные интервалы и круги; кому-то просто секундомер. На всё это, конечно, в интернете полно готовых программ, но почему бы не сделать свою?
Если вы пропустили наш первый урок по созданию полноценных программ, где мы рассказываем про инструменты и основные моменты, прочитайте его сейчас. Без этого вам будет сложнее разобраться, что здесь происходит, и что это всё вообще такое.
Как устроен интервальный таймер
Наш сценарий работы такой: пользователь задаёт время одного упражнения и перерыва после него, а потом указывает, сколько раз он хочет выполнить это упражнение с перерывом. Например, стоять в планке на протяжении минуты, потом отдыхать 45 секунд, повторить восемь раз. Получается, что основных параметров у нас три: время тренировки, время отдыха, количество подходов.
Чтобы во время тренировки можно было не смотреть на экран, надо предусмотреть звуковое оповещение. Оно подскажет, что закончился очередной интервал, и нужно отдохнуть или снова приступить к упражнению.
Основа страницы
Возьмём стандартный шаблон страницы:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>
Теперь поработаем со служебным разделом <head>..</head>
и наполним его нужными командами:
<!-- Это название страницы, выводится в табе браузера-->
<title>Интервальный таймер</title>
<!-- это служебная информация для браузера, пока можно не вникать -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
Подключаем там же фреймворк jQuery, который упростит нам работу с таймером и его компонентами:
<!-- подключаем фреймворк jQuery -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js" type="text/javascript"></script>
Теперь разместим все элементы интерфейса на странице. Начнём с общего блока, где будет наш таймер:
<div class="app_form_block app_main app_timer ">
<!-- внутри этого блока мы и будем размещать все элементы -->
</div>
Теперь будем размещать внутри этого блока интерфейс программы. Сразу подключим звуковые уведомления, за них отвечает тег <audio>
<!-- подключаем звуковые уведомления -->
<audio id="audio_beep">
<source src="s.mp3" type="audio/mp3" >
</audio>
Звук мы взяли где-то из интернета и положили в ту же папку, что и наша программа.
Чтобы мы могли менять время и параметры тренировки, сделаем форму и разместим все наши компоненты на ней.
<!-- делаем форму на сайте, где будем выводить наши элементы -->
<form name="timer_form" id="timer_form">
<!-- тут будут наш таймер и блок с настройками -->
</form>
Для начала поместим на форму специальный заголовок. Его хитрость в том, что он будет невидимой кнопкой, на которую нажмёт скрипт, когда всё загрузится. После такого виртуального нажатия наш таймер получит свои начальные значения и будет готов к работе.
<!-- пишем специальный заголовок страницы -->
<div class="block_row timer_types ">
<span class="timer_types_btn active" id="Secret">Интервальный таймер
</span>
</div>
Тег <span>
— это контейнер, как бы прозрачная обёртка для своего содержимого. С его помощью мы можем отдельно настроить внешний вид и поведение нашего текста. Теперь у нашего заголовка есть внутреннее имя "Secret"
и класс "timer_types_btn"
, который пока ещё нигде не прописан.
На этом этапе у нас будет пустая страница с надписью «Интервальный таймер». Пока что ничего интересного.
Интерфейс
Интерфейс таймера мы упакуем в собственный блок, чтобы можно было настраивать как общий вид, так и части по отдельности. Его мы вставляем в нашу форму после блока с заголовком:
<div class="block_row app_console">
<!-- основной блок со всеми цифрами -->
</div>
Первое, что мы в него добавим — интерфейс настроек тренировки, где можно будет выбрать время и количество повторений. Сначала добавим в него настройку времени на упражнения:
<!-- блок, который отвечает за время тренировки -->
<span class="timer_interval_work">
<!-- по умолчанию ставим время одного подхода 00 минут… -->
<span class="timer_interval_nums minutes green" contenteditable="true">00
</span>
<!-- разделитель — двоеточие -->
<span class="timer_sep">:
</span>
<!-- …и 25 секунд -->
<span class="timer_interval_nums seconds green" contenteditable="true">25
</span>
</span>
Внутри этого блока у нас три раздела: один отвечает за минуты, второй — за двоеточие, третий — за секунды. Свойство contenteditable="true"
означает, что этот контент можно изменять, щёлкая мышкой и вводя свои значения.
Так же добавим блоки количества подходов и времени отдыха:
<!-- блок, который отвечает за количество подходов -->
<span class="timer_interval_count">
<!-- какой сейчас идёт подход -->
<span class="timer_interval_nums times">1
</span>
<!-- разделитель — косая черта -->
<span class="timer_sep">/
</span>
<!-- и сколько подходов у нас всего -->
<span class="timer_interval_nums all_times" contenteditable="true">10
</span>
</span>
<!-- блок, который отвечает за время отдыха -->
<span class="timer_interval_rest">
<!-- по умолчанию ставим время отдыха 0 минут… -->
<span class="timer_interval_nums minutes red" contenteditable="true">00
</span>
<!-- разделитель — двоеточие -->
<span class="timer_sep">:
</span>
<!-- …и 5 секунд -->
<span class="timer_interval_nums seconds red" contenteditable="true">5
</span>
</span>
Вставляем это всё в нашу панель настроек и смотрим, что получилось:
Табло для отсчёта времени и кнопки
Для большого табло используем тот же код, что и для панели настроек, только применим потом другой класс оформления:
<!-- большая цифровая панель -->
<div class="timer_panel_nums">
<!-- минуты… -->
<span class="timer_nums minutes">00</span>
<span>:</span>
<!-- …и секунды -->
<span class="timer_nums seconds">00</span>
</div>
Кнопки сделаем с помощью стандартного тега <input>
. Каждой кнопке присвоим своё имя и идентификатор, чтобы можно было с ними работать из скрипта:
<!-- блок кнопок -->
<div class="block_row">
<!-- Кнопка «Сброс» -->
<input value="Сброс" name="timer_clear" id="timer_clear" class="timer_btn" type="button" />
<!-- Кнопка «Старт» -->
<input value="Старт" name="timer_run" id="timer_run" class="timer_btn run" type="button" />
<!-- Кнопка «Пауза», в самом начале она скрыта -->
<input value="Пауза" name="timer_pause" id="timer_pause" class="timer_btn pause hide" type="button" />
<!-- закончился блок кнопок -->
</div>
Вот наш интерфейс. Ставим его в форму на странице и смотрим на результат:
Настраиваем внешний вид
Очевидно, что таймер наш выглядит скромновато. Нужно его оформить. Для этого используем CSS — стили оформления элементов на странице.
Как вы помните, CSS-стили можно выносить в отдельный файл, а можно писать в разделе <head>
с помощью тега <script>
. Выберем второй способ и определим все стили прямо в этом же документе:
body {
text-align: center;
margin: 10;
font-family: Verdana, Arial, sans-serif;
font-size: 16px;
}
/*настраиваем отступы в полях ввода цифр, там, где задаётся время тренировки, отдыха, и количество повторов*/
.app_form_block input[type="number"] {
padding: 4px 4px;
}
/*задаём отступы у элементов*/
.app_main .block_row {
padding: 1em 0.5em;
}
/*устанавливаем размер цифр для количества повторов, времени тренировки и отдыха */
.app_timer .app_console .timer_panel_info {
font-size: 1.6em;
line-height: 1.2em;
letter-spacing: 0;
}
/*зелёный цвет*/
.green {
color: #bff08e;
}
/*красный цвет*/
.red {
color: #e56655;
}
/*задаём размер таймера*/
.app_timer .app_console .timer_panel_nums {
font-size: 4.8em;
line-height: 1.2em;
margin-top: 50px;
}
/*учим браузер скрывать временно ненужные кнопки*/
.app_timer .timer_btn.hide,
.app_timer .timer_nums.hide,
.app_timer .timer_sep.hide {
display: none;
}
/*задаём размер кнопок*/
.app_timer .timer_btn {
border-color: #777;
color: #777;
font-size: 1.2em;
font-weight: 400;
line-height: 1.8em;
padding: 8px 12px;
margin: 0 2px;
min-width: 180px;
}
/*настраиваем, как изменится цвет кнопки, если провести по ней мышкой*/
.app_timer .timer_btn:hover {
background-color: #777;
color: #fff;
}
/*задаём размер кнопок*/
.app_timer .timer_btn.run,
.app_timer .timer_btn.pause {
border-color: #5594e5;
color: #5594e5;
font-weight: 600;
}
/*настраиваем, как изменится цвет АКТИВНОЙ кнопки, если провести по ней мышкой*/
.app_timer .timer_btn.run:hover,
.app_timer .timer_btn.pause:hover {
background-color: #5594e5;
color: #fff;
}
Сохраняем код, обновляем страницу в браузере:
Класс! Время тренировки у нас выделено зелёным цветом, отдыха — красным. Благодаря этому мы не перепутаем числа. А ещё появилось большое табло отсчёта времени и две кнопки вместо трёх — «Пауза» автоматически исчезла после загрузки.
Собираем скрипт
Пока при нажатии на кнопки ничего не происходит — у нас нет скрипта, который бы это обрабатывал. В прошлый раз мы его писали там же, внутри страницы, теперь давайте вынесем его в отдельный файл. Так будет удобнее читать код: команд уже много, и если туда же добавить скрипт, будет совсем большая простыня текста. Поэтому создадим отдельный файл interval_timer_script.js
и подключим его на нашей странице с таймером такой командой:
<!-- подключаем наш код, который отвечает за правильную работу таймера -->
<script type="text/javascript" src="interval_timer_script.js" defer></script>
Смотрите, у нас появилась новая команда в теге скрипта: defer
. Она запрещает скрипту выполняться, пока страница полностью не загрузится. Это позволяет нам сначала подготовить страницу целиком, а только потом запускать таймер.
Мы назвали наш скрипт interval_timer_script.js
, но название у него может быть каким угодно, лишь бы из английских букв, цифр и без пробелов. Расширение .js
должно остаться таким же в любом случае. Меняете имя файла — не забудьте прописать его название в src="….js"
, чтобы страница знала, как называется нужный скрипт.
Теперь наполним наш скрипт. Начнём с переменных:
// переменная, которая отслеживает, сколько секунд прошло
var now_seconds = 0;
// var now_times = 0;
// тренировка начинается с отсчёта рабочего времени, сразу ставим этот режим
var interval_type = 'work';
// переменная для отсчёта интервалов
var intervalVariable;
// переменная, которая следит за количеством секунд в таймерах
var seconds_1 = 0;
// ставим начальные значения счётчиков минут и секунд
var timer_minutes = 0;
var timer_seconds = 0;
Теперь напишем функцию, которая будет постоянно готовить к запуску наше звуковое оповещение. Она будет брать нужные нам файлы ogg и mp3 и подключать их к нашей странице:
// подготовка звукового оповещения
function audio_change() {
// находим аудиоэлемент на странице
var audio = $('#audio_beep');
// подключаем нужный файл со звуком. Файлов два, потому что разные браузеры играют разные форматы
$('#audio_beep source[type="audio/ogg"]').attr('src', 's.ogg');
$('#audio_beep source[type="audio/mp3"]').attr('src', 's.mp3');
// ставим звук на паузу и подгружаем его
audio[0].pause();
audio[0].load();
}
Перед тем, как работать с таймером и интервалами, давайте напишем маленькую функцию, которая переводит наше время из просто секунд в секунды, минуты и часы. Мало ли, вдруг кто-то фанат долгих упражнений:
// разбиваем секунды на часы, минуты и секунды
function secondsToTime(seconds) {
var h = parseInt(seconds / 3600 % 24);
var m = parseInt(seconds / 60 % 60);
var s = parseInt(seconds % 60);
return { 'hours': leadZero(parseInt(h)), 'minutes': leadZero(parseInt(m)), 'seconds': leadZero(parseInt(s)) };
}
Ну и добавим эстетики в программу — для красоты будем ставить первым ноль, если число минут или секунд меньше девяти:
function leadZero(num) {
var s = "" + num;
if (s.length < 2) {
s = "0" + s;
}
return s;
}
Отдельной функцией сделаем отображение времени на табло. Там как раз и пригодится наша функция, которая переводит секунды в минуты:
// отображение времени на табло
function renderTimerNums(seconds) {
var timer_nums = secondsToTime(seconds)
$('.timer_nums.minutes').text(timer_nums.minutes);
$('.timer_nums.seconds').text(timer_nums.seconds);
}
Теперь предусмотрим смену времени каждую секунду, пока работает таймер. Для этого будем отдельно обрабатывать два режима: тренировки и отдыха. Не забудем про красоту — время тренировки сделаем зелёным, как на панели настроек, а время отдыха — красным:
// функция, которая отвечает за смену времени на таймере
function timerTick(type, timer_params) {
// увеличиваем количество прошедших секунд на единицу
now_seconds++;
// если идёт время тренировки
if (interval_type == 'work') {
// и ещё осталось время на тренировку
if (timer_params.time_work - now_seconds > 0) {
// показываем, сколько осталось времени
renderTimerNums(timer_params.time_work - now_seconds);
}
// иначе, если тренировка закончилась
else {
// обнуляем табло
renderTimerNums(0);
// проигрываем звук уведомления
$('#audio_beep')[0].play();
// обнуляем секунды тренировки
now_seconds = 0;
// ставим режим «Отдых»
interval_type = 'rest';
// меняем цвет цифр на таймере
$('.timer_panel_nums .timer_nums').removeClass('green');
$('.timer_panel_nums .timer_nums').addClass('red');
}
}
// если началось время отдыха
else if (interval_type == 'rest') {
// и оно ещё не закончилось
if (timer_params.time_rest - now_seconds > 0) {
// показываем оставшееся время
renderTimerNums(timer_params.time_rest - now_seconds);
}
// а если всё-таки время отдыха закончилось
else {
// обнуляем табло
renderTimerNums(0);
// проигрываем звук уведомления
$('#audio_beep')[0].play();
// обнуляем секунды
now_seconds = 0;
// увеличиваем счётчик повторов на единицу
now_times++;
// если мы выполнили все повторы
if (now_times > timer_params.interval_count) {
// обновляем информацию на панели настроек
$('.timer_interval_nums.times').text(timer_params.interval_count);
$('#timer_pause').trigger('click');
now_seconds = 0;
$('.timer_panel_nums .timer_nums').removeClass('red');
}
// иначе, если количество пройденных повторов меньше, чем было задано
else {
// обновляем информацию на панели настроек
$('.timer_interval_nums.times').text(now_times);
$('.timer_panel_nums .timer_nums').removeClass('red');
$('.timer_panel_nums .timer_nums').addClass('green');
}
// ставим после отдыха снова режим тренировки
interval_type = 'work';
}
}
}
Продолжение скрипта: обрабатываем нажатия на кнопки
Начнём с кнопки «Старт». Логика работы такая: следим за тем, в каком режиме работает таймер, не забывая скрывать «Старт» и показывать «Паузу» после запуска. Как только перешли к отдыху или снова к тренировке — включаем звуковой сигнал. Если все тренировки прошли, но мы снова нажали «Старт», начнём всё сначала:
// обрабатываем нажатие на кнопку «Старт»
$('#timer_run').click(function () {
// настраиваем аудио
audio_change();
// делаем кнопку «Старт» невидимой
$(this).addClass('hide');
// а кнопку «Пауза», наоборот, видимой
$('#timer_pause').removeClass('hide');
// записываем установленные минуты и секунды
timer_minutes = $('.timer_nums.minutes').text();
timer_seconds = $('.timer_nums.seconds').text();
// переменная, которая будет хранить параметры интервального цикла
var timer_params = {};
// запускаем звуковое оповещение
$('#audio_beep')[0].play();
// устанавливаем размер тренировки...
timer_params.time_work = $('.timer_interval_work .minutes').text() * 60 + $('.timer_interval_work .seconds').text() * 1;
// ...отдыха,
timer_params.time_rest = $('.timer_interval_rest .minutes').text() * 60 + $('.timer_interval_rest .seconds').text() * 1;
// ...и количество повторений
timer_params.interval_count = $('.timer_interval_count .all_times').text() * 1;
// обновляем информацию о том, сколько подходов уже сделано
now_times = $('.timer_interval_count .times').text() * 1;
// если все тренировки прошли — начнём сначала
if (now_times >= timer_params.interval_count) {
now_times = 1;
$('.timer_interval_count .times').text(now_times);
}
// если сейчас режим тренировки, то делаем табло зелёным и запоминаем количество секунд
if (interval_type == 'work') {
$('.timer_panel_nums .timer_nums').addClass('green');
seconds_1 = timer_params.time_work;
}
// если сейчас режим отдыха, то делаем табло красным и запоминаем количество секунд
else if (interval_type = 'rest') {
$('.timer_panel_nums .timer_nums').addClass('red');
seconds_1 = timer_params.time_rest;
}
// задаём интервал обновления — одна секунда
intervalVariable = setInterval(timerTick, 1000, 'interval', timer_params);
// выходим из функции
return false;
});
Теперь очередь кнопки «Пауза». Она появляется в тот момент, когда мы нажимаем на кнопку «Старт», которая сразу исчезает. Логика чуть другая: при каждом нажатии мы просто останавливаем интервал и тоже включаем звук, чтобы обозначить смену режима:
// что будет, если мы нажмём на кнопку «Пауза»
$('#timer_pause').click(function (event, params) {
// если кнопка сработала нормально
if (params !== undefined) {
// но аудиопараметры ещё не задавались
if (params.audio === undefined) {
// задаём параметры оповещения
params.audio = 1;
}
}
// иначе сразу задаём параметры звука
else {
params = { audio: 1 };
}
// после нажатия на кнопку «Пауза» делаем её невидимой
$(this).addClass('hide');
// а кнопку «Старт» — наоборот, видимой
$('#timer_run').removeClass('hide');
// останавливаем таймер
clearInterval(intervalVariable);
// если со звуком всё в порядке
if (params.audio) {
// проигрываем звуковое оповещение
$('#audio_beep')[0].play();
}
// выходим из функции
return false;
});
Последнее, что осталось — запрограммировать реакцию на нажатие кнопки «Сброс». Порядок действий будет такой: виртуально щёлкаем по кнопке «Пауза», обнуляем табло, и выставляем стартовые значения по умолчанию в нашу панель настроек:
// что будет, если нажмём на кнопку «Сброс»
$('#timer_clear').click(function () {
// имитируем нажатие на кнопку «Пауза», чтобы остановить таймер
$('#timer_pause').trigger('click', { audio: 0 });
// ставим режим тренировки
interval_type = 'work';
// убираем красный цвет на табло, которое там осталось от включения паузы
$('.timer_panel_nums .timer_nums').removeClass('green red');
// обнуляем табло
renderTimerNums(0);
// обнуляем значения служебных переменных
now_seconds = 0;
now_times = 0;
// задаём начальное значение первого блока секунд
seconds_1 = 25;
// устанавливаем начальные значения времени тренировки, отдыха и количества повторов
$('.timer_interval_work .minutes').text('00');
$('.timer_interval_work .seconds').text('25');
$('.timer_interval_rest .minutes').text('00');
$('.timer_interval_rest .seconds').text('05');
$('.timer_interval_count .times').text('1');
$('.timer_interval_count .all_times').text('10');
// выходим из функции
return false;
});
Теперь собираем скрипт в один файл, сохраняем, обновляем нашу страницу и нажимаем на «Старт». Всё, успех — таймер начал отсчёт:
Если у вас не получилось всё правильно собрать в один файл и запустить — ничего страшного. Мы сами уже сделали это за вас и упаковали все нужные файлы в один архив. Вам нужно его скачать, распаковать и запустить файл int.html.
- Главная»
- Уроки»
-
PHP»
- Как создать страницу с обратным отсчетом времени с помощью PHP и jQuery
- Метки урока:
- sql
- mysql
- регистрация
- контактная форма
- php
- jquery
В этом уроке я хочу показать, как создать простую страницу с обратным отсчетом времени с использованием PHP и jQuery. Что такое страница с обратным отсчетом времени? В общем, это страница, которая информирует посетителей сайта, о том, что он находится в стадии разработки и сколько времени осталось до его запуска. На странице находится счетчик с обратным отсчетом времени и форма, для добавления почтового адреса заинтересованных посетителей. В последствие, на сохраненные адреса можно разослать сообщение об открытии сайта. В этом уроке я покажу как создать страницу похожую на эту:
Эту страницу можно легко изменить и украсить с помощью CSS. Также вы можете добавить логотип вашей компании и любые другие элементы, редактируя HTML код.
Небольшое вступление
Архив, который вы можете скачать с сайта готов к использованию и содержит следующие файлы:
index.php – сама страница с обратным отсчетом (счетчик и форма для)
config.php – обеспечивает подключение к базе даннах
insert.php – php код для добавления почтового адреса в базу данных
js/jquery-1.3.2.min.js – jQuery framework
js/countdown.js – скрипт обратного отсчета времени
1. index.php
index.php является непосредственным интерфейсом страницы с обратным отсчетом, который содержит обратный счетчик и форму добавления почтового адреса.
Скрипт счетчика обратного отсчета времени
Для того, чтобы создать счетчик я использовал скрипт обратного отсчета времени, который позволяет рассчитать время до определенного события в будущем. Оставшееся время будет зависеть от временной зоны посетителя. Вид счетчика можно полностью поменять в соответствии с вашими предпочтениями.
Все что вам нужно это добавить одну строчку кода между тегами <head> </head>:
<script type="text/javascript" src="js/countdown.js"></script>
Затем, в теле страницы необходимо добавить следующий код счетчика:
<div id="count_down_container"></div>
<script type="text/javascript">
var currentyear = new Date().getFullYear()
var target_date = new cdtime("count_down_container", "July 6, "+currentyear+" 0:0:00")
target_date.displaycountdown("days", displayCountDown)
</script>
Чтобы установить нужную дату, необходимо заменить строку «July 6» и «0:0:00» на необходимые вам (например, 25 декабря):
new cdtime("count_down_container", "July 6, "+currentyear+" 0:0:00")
В результате получается:
new cdtime("count_down_container", "December 25, "+currentyear+" 0:0:00")
Если вы хотите изменить стиль счетчика, вам необходимо внести изменения в следующие классы:
.count_down{...}
.count_down sup{...}
В частности класс .count_down{} изменяет формат цифр счетчика, класс .count_down sup{} определяет стиль текст «days», «hours», «minutes».
jQuery и форма ввода
Отлично, счетчик создан! Следующий шаг: подключить библиотеку jQuery к нашему сайту, для чего между тегами <head> </head> следующий код:
<script type="text/javascript" src="js/jquery-1.3.2.min.js"> </script>
А теперь в теле страницы добавляем следующий код простой формы с одним полем ввода:
<form id="submit_leave_email">
<input id="input_leave_email" type="text" class="input_bg" value="Add your e-mail address"/>
<button type="submit" class="input_button">Update me</button>
</form>
…и добавить в это поле сообщение после того как посетитель отправит свой почтовый адрес:
<div id="update_success">E-mail added!</div>
… вот результат, который должен получиться после отправки сообщения:
Форма с полем ввода исчезает с помощью красивого эффекта затухания (fade-out effect), а вместо нее появляется итоговое сообщение. А теперь, в заголовок страницы (между тегами ) после кода подключения библиотеки jQuery добавляем скрипт, который позволяет добавить ajax-функциональность. Это даст нам возможность добавить e-mail посетителя в базу данных без перезагрузки страницы:
<script type="text/javascript">
$(document).ready(function(){
$("form#submit_leave_email").submit(function() {
var input_leave_email = $('#input_leave_email').attr('value');
$.ajax({
type: "POST",
url: "insert.php",
data:"input_leave_email="+ input_leave_email,
success: function(){
$("#submit_leave_email").fadeOut();
$("#update_success").fadeIn();
}
});
return false;
});
});
</script>
2. insert.php
Файл insert.php содержит в себе код, который сохраняет почтовый адрес посетителя в базу данных. Для примера я создал таблицу EMAIL с одним атрибутом «email». PHP код очень прост:
<?php
if(isset($_POST['input_leave_email'])){
/* Connection to Database */
include('config.php');
/* Remove HTML tag to prevent query injection */
$email = strip_tags($_POST['input_leave_email']);
$sql = 'INSERT INTO WALL (email) VALUES( "'.$email.'")';
mysql_query($sql);
echo $email;
} else { echo '0'; }
?>
Для того, чтобы скрипт заработал на вашем сервере измените параметры подключения к вашей базе данных в файле config.php, создайте таблицу и загрузите все файлы урока на сервер. Наслаждайтесь!
5 последних уроков рубрики «PHP»
-
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
-
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
-
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
-
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
-
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
От автора: разнообразные акции, распродажи, скидки и т.д. – распространенный маркетинговый ход современных торговых отношений, который часто используется в интернет магазинах. Наверное, каждый из Вас сталкивался с таким понятием как таймер обратного отсчета, определяющий сначала фиксированную дату начала, а затем время до окончания какой-либо акции или распродажи. Подобный скрипт исключает необходимость лишних подсчетов и делает сайт более эффектным и современным. В этом уроке я предлагаю Вам создать это полезное веб-приложение вместе.
Логику скрипта мы напишем на языке Javascript, с использованием библиотеки jQuery. А визуальное оформление создадим с помощью обычного HTML. Для тех, кто не знает, библиотека jQuery – это библиотека, написанная на языке Javascript. Если сказать другими словами, то это набор готовых функций, для облегчения взаимодействия Javascript и HTML.. Эта библиотека предоставляет нам очень большой выбор различных функций и методов по доступу к атрибутам и содержимому выбранных элементов. Итак, давайте приступим.
1. Создание HTML разметки.
Первым делом создадим визуальную часть нашего скрипта, то есть разметку на основе HTML. Для этого создадим новый файл под названием index.html. Вот с таким содержимым:
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<!DOCTYPE html> <html lang=«en»> <head> <link rel=«stylesheet» href=«style.css»> <title>Таймер обратного отсчета</title> </head> <body> <div id=«timer_wrap»> <div id=«clock»> <div id=‘day’> <p id=‘day0’></p> <p id=‘day1’></p> </div> <div id=«razd»> : </div> <div id=‘hour’> <p id=‘hour0’></p> <p id=‘hour1’></p> </div> <div id=«razd»> : </div> <div id=‘min’> <p id=‘min0’></p> <p id=‘min1’></p> </div> <div id=«razd»> : </div> <div id=‘sec’> <p id=‘sec0’></p> <p id=‘sec1’></p> </div> </div> </div> </body> </html> |
Как Вы видите имеется общий контейнер с идентификатором id=»timer_wrap», в котором будет расположен наш таймер. В нем содержится вспомогательный контейнер с идентификатором id=»clock», который служит для более красивого отображения таймера. Далее обратите внимание, что в контейнерах с идентификаторами id=’day’, id=’hour, ‘id=’min’, id=’sec’ будут содержатся — дни, часы, минуты и секунды соответственно. Между этими контейнерами вставлены блоки с идентификаторами id=»razd», которые служат разделителями для каждого элемента таймера (как обычно разделитель для времени — это символ «:»). Так как каждый элемент времени таймера (секунды, минуты, часы, дни) выводится в двузначном формате, то для более красивого отображения времени я предусмотрел для каждого разряда времени свой блок. К примеру, для отображения секунд предусмотрен блок с идентификатором id=’sec’ и для каждого разряда предусмотрен свой блок: для единиц — блок id=’sec1′, для десятков — id=’sec0′. Остальные элементы времени по аналогии.
Теперь необходимо создать файл для хранения правил css, для нашего скрипта, как Вы видите я подключаю файл style.css, поэтому его и создадим. Вот его содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#hour,#min,#sec,#day { float:left; padding:5px; width:48px; height:55px; position:relative; display:block; } p { margin:0px; padding:0px; width:24px; height:55px; float:left; color:#ffffff; font—size:3em; font—weight:bold; position:absolute; } #sec1,#min1,#hour1,#day1 { margin—left:24px; } #timer_wrap { background—color:#515151; border—radius:10px; height:65px; width:340px; padding:15px 18px; } #clock { border:1px solid white; border—radius:10px; height:65px; width:298px; background:url(clock.jpg) left top no—repeat; padding:0px 20px 0px 20px; position:absolute; } #razd { float:left; color:#ffffff; font—weight:bold; font—size:3em; margin:0px 3px 0px 3px; } #stop { color:white; font—size:2em; margin:15px 10px 10px 25px; position:absolute; } |
Теперь, если посмотреть в браузере, то мы увидим вот такую заготовку для нашего таймера.
Теперь нам осталось создать сам таймер и вывести на экран.
2. Подготовка к кодированию на Javascript.
Первым делом давайте создадим пустой файл script.js, в котором будут храниться скрипты на языке Javascript, и сохраним его в папке js. Далее давайте подключим этот файл к нашему скрипту (между тегами head):
<script type=«text/javascript» src=«js/script.js»></script> |
Далее нам понадобится библиотека jQuery, которую можно скачать с официального сайта //jquery.com кликнув по кнопочке DOWNLOAD. После скачивания библиотеки также ее сохраним в папке js и подключим к нашему скрипту:
<script type=«text/javascript» src=«js/jquery-1.7.2.min.js»></script> |
3. Создаем логику таймера.
Итак, для начала перейдем в файл script.js и откроем код для работы с библиотекой jQuery:
$(document).ready(function () { //код jQuery }); |
Как Вы помните, для того что бы начать работу с библиотекой jQuery, необходимо выбрать элемент document нашей страницы, и для него вызвать обработчик события ready (который сработает после полной загрузки страницы), и в этом обработчике описываем функцию в теле которой и ведем кодирование с использованием библиотеки jQuery.
Теперь приступим к написанию логики таймера. Работа таймера будет основана на периодическом вызове функции, которая при каждом своем вызове, будет измерять количество миллисекунд, от текущего времени, и до времени отсчета (время от которого необходимо вести обратный отсчет), при этом выводя результат на экран в удобном нам виде (в виде стандартных часов). Конечно, эту функцию мы будем вызывать с интервалом в одну секунду, для точного вывода секунд нашего таймера. То есть за один вызов функции мы будем проводить один замер времени и выводить его на экран.
Итак, давайте создадим функцию get_timer() которая и будет функцией вызова таймера. Далее в этой функции создадим переменную date_new, в которой будем хранить дату от которой нужно вести обратный отсчет. Дата будет представлять собой строку формата:
Месяц День,Год ЧЧ:ММ
К примеру, если мы хотим назначить датой отсчета 1 июля 2012 года и время 12.00, то строку необходимо сформировать таким образом:
July 1,2012 12:00
Теперь давайте приведу часть кода функции для дальнейших пояснений:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//функция вызова таймера function get_timer() { //Дата для обратного отсчета var date_new = «May 22,2012 22:00»; //////////////////////////////////// //////////////////////////////////// //Объект даты для обратного отсчета var date_t = new Date(date_new); //Объект текущей даты var date = new Date(); //Вычисляем сколько миллисекунд пройдет //от текущей даты до даты отсчета времени var timer = date_t — date; } |
Обратите внимание, далее создаем объект класса Date (записываем его в переменную date_t) и передаем его конструктору — дату отсчета времени. Класс Date предназначен для работы с датами и временем. Если конструктору, не передавать ни каких значений, то будет создан объект класса Date с текущими датой и временем. Которую, мы можем вывести, если нам это необходимо. Дата и время в объекте Date, хранятся не в явном виде, а в виде количества миллисекунд прошедших с 0 часов 0 минут 1 января 1970 года. Поэтому мы можем узнать, сколько пройдет миллисекунд между временем отсчета и текущей датой, что мы и делаем и сохраняем результат в переменную timer.
То есть в переменной timer у нас содержится количество миллисекунд до времени отсчета. Значит, нам осталось только узнать, сколько это будет дней, часов, минут и секунд, а затем просто вывести это на экран. Первым делом переведем миллисекунды в привычное для нас время (продолжаем кодировать функцию get_timer()):
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
//Проверяем не нужно ли закончить отсчет //если дата отсчета еще не истекла, то количество //миллисекунд в переменной date_t будет больше чем в переменной date if(date_t > date) { //Вычисляем сколько осталось дней до даты отсчета. //Для этого количество миллисекунд до даты отсчета делим //на количество миллисекунд в одном дне var day = parseInt(timer/(60*60*1000*24)); //если полученное число меньше 10 прибавляем 0 if(day < 10) { day = ‘0’ + day; } //Приводим результат к строке day = day.toString(); //Вычисляем сколько осталось часов до даты отсчета. //Для этого переменную timer делим на количество //миллисекунд в одном часе и отбрасываем дни var hour = parseInt(timer/(60*60*1000))%24; //если полученное число меньше 10 прибавляем 0 if(hour < 10) { hour = ‘0’ + hour; } //Приводим результат к строке hour = hour.toString(); //Вычисляем сколько осталось минут до даты отсчета. //Для этого переменную timer делим на количество //миллисекунд в одной минуте и отбрасываем часы var min = parseInt(timer/(1000*60))%60; //если полученное число меньше 10 прибавляем 0 if(min < 10) { min = ‘0’ + min; } //Приводим результат к строке min = min.toString(); //Вычисляем сколько осталось секунд до даты отсчета. //Для этого переменную timer делим на количество //миллисекунд в одной минуте и отбрасываем минуты var sec = parseInt(timer/1000)%60; //если полученное число меньше 10 прибавляем 0 if(sec < 10) { sec = ‘0’ + sec; } //Приводим результат к строке sec = sec.toString(); } else { $(«#clock»).html(«<span id=’stop’>Отсчет закончен!!!</span>»); } |
Итак, для начала сделаем небольшую проверку, но то, не закончен ли отсчет. Если количество миллисекунд в переменной date_t больше чем в переменной – date, значит необходимо продолжать отсчет. Если же меньше – то мы с помощью jQuery производим выборку блока с идентификатором clock ($(«#clock»)) и при помощи метода html() вставляем в выбранный блок данные, которые переданы ему параметром (метод html() выводит данные, которые переданы ему параметром, в выбранный блок).
Первым делом найдем количество дней до даты отсчета. Для этого переменную таймер делим на количество миллисекунд в одном дне, а это можно узнать из выражения – 24*60*60*1000 (в одной секунде 1000 миллисекунд, в одной минуте 60 секунд, в одном часе 60 минут и в одном дне 24 часа). С помощью функции parseInt() мы отбрасываем у результата дробную часть, так как эта функция, приводит строку, переданную ей параметром, к целочисленному результату (попросту говоря, возвращает число, а если это невозможно, то NaN). Далее если получившееся число меньше 10 – добавляем 0, так как каждый элемент времени нужно выводить в двузначном формате. И затем с помощью метода toString() приводим получившийся результат (переменную day), к строковому типу данных (это нам понадобится для более красивого отображения времени, но об этом позже). Как видите здесь все просто – немного математики и все.
Далее часы определяем по аналогии с днями, только переменную делим уже на количество миллисекунд в одном часе. Но теперь необходимо отбросить дни, так как мы сейчас получили общее количество часов до указанной даты отсчета. Для этого мы с помощью операции – остаток от деления отбрасываем дни. Для обозначения этой операции используется символ — % и возвращает эта операция — остаток от деления левого операнда на правый операнд. То есть мы как бы делим общее число получившихся часов на 24 (количество часов в одном дне) и берем от результата только остаток от деления – так как целая часть от деления – это уже дни, а мы их уже получили.
Затем находим минуты – все по аналогии. Переменную таймер делим на количество миллисекунд в одной минуте и отбрасываем часы (как и в примере выше – берем остаток от деления общего количества минут на 60 – количество минут в одном часе).
И последнее, находим секунды. Для этого все также делим переменную таймер на количество миллисекунд в одной секунде и отбрасываем минуты. Все также берем остаток от деления общего количества секунд на 60 – количество секунд в одной минуте.
Итак, в принципе таймер у нас готов осталось красиво его вывести на экран и периодически вызывать созданную нами функцию. Но перед этим давайте себя проверим и выведем на экран то что у нас получилось. Для этого вставим в функцию код (ниже после расчета секунд):
alert(day + » : « + hour + » : « + min + » : « + sec); |
Затем после кода функции вызовем ее на исполнение:
//Вызываем функцию на исполнение get_timer(); |
И теперь, задав любое время для отсчета таймера, переходим в браузер и обновим нашу страничку. Как Вы видите, появилась надпись с временем которое остается до указанной даты отсчета.
4. Выводим таймер на экран.
Но, конечно, сейчас наш таймер не работает, так как он не считает время. Вернее считает, но делает всего один замер времени за один вызов функции. Поэтому давайте это исправим, а заодно красиво выведем наш таймер на экран (код с функцией alert(), можно удалить, либо закомментировать):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
//Выводим дни //Проверяем какие предыдущие цифры времени должны вывестись на экран //Для десятков дней if(day[1] == 9 && hour[0] == 2 && hour[1] == 3 && min[0] == 5 && min[1] == 9 && sec[0] == 5 && sec[1] == 9) { animation($(«#day0»),day[0]); } else { $(«#day0»).html(day[0]); } //Для единиц дней if(hour[0] == 2 && hour[1] == 3 && min[0] == 5 && min[1] == 9 && sec[0] == 5 && sec[1] == 9) { animation($(«#day1»),day[1]); } else { $(«#day1»).html(day[1]); } //Выводим часы //Проверяем какие предыдущие цифры времени должны вывестись на экран //Для десятков часов if(hour[1] == 3 && min[0] == 5 && min[1] == 9 && sec[0] == 5 && sec[1] == 9) { animation($(«#hour0»),hour[0]); } else { $(«#hour0»).html(hour[0]); } //Для единиц часов if(min[0] == 5 && min[1] == 9 && sec[0] == 5 && sec[1] == 9) { animation($(«#hour1»),hour[1]); } else { $(«#hour1»).html(hour[1]); } //Выводим минуты //Проверяем какие предыдущие цифры времени должны вывестись на экран //Для десятков минут if(min[1] == 9 && sec[0] == 5 && sec[1] == 9) { animation($(«#min0»),min[0]); } else { $(«#min0»).html(min[0]); } //Для единиц минут if(sec[0] == 5 && sec[1] == 9) { animation($(«#min1»),min[1]); } else { $(«#min1»).html(min[1]); } //Выводим секунды //Проверяем какие предыдущие цифры времени должны вывестись на экран //Для десятков секунд if(sec[1] == 9) { animation($(«#sec0»),sec[0]); } //Для единиц секунд else { $(«#sec0»).html(sec[0]); } animation($(«#sec1»),sec[1]); //Периодически вызываем созданную функцию, //интервал вызова одна секунда(1000 милли секунд) setTimeout(get_timer,1000); |
Итак, на этом наша функция вызова таймера готова. Выводить время таймера я планирую с небольшой анимацией. То есть, как только будет изменяться какая-то цифра таймера, то будет происходить небольшой скачек этой цифры (цифра будет как бы опускаться вниз, плавно появляясь), делая наш таймер более красивым и современным. Но для этого нужно проверять, какие идут впереди цифры времени, что бы знать изменится ли число или нет.
Обратите внимание, в самом конце кода функции, я вызываю функцию setTimeout(), с помощью которой, вызывается наша создаваемая функция через одну секунду (она вызывается ровно один раз). То есть мы один раз функцию вызываем сами, а последующие разы, она вызывает себя сама с интервалом в одну секунду.
Теперь так как переменные day, hour, min и sec у нас имеют строковый тип данных, то мы можем обращаться к любому символу этих переменных используя индексы — их номера в строке. К примеру если в переменной day у нас записана строка 10, то 1 — это символ с индексом 0, а 0 — с индексом 1, значит для вывода первого символа этой переменной можно написать вот так day[0].
Далее (пояснения веду с конца кода функции) выводим на экран единицы секунд (как я и говорил секунды выводятся в двузначном формате — первое число это десятки, второе — единицы) . Для вывода используем функцию animation() (код которой я приведу ниже), которая используется для анимированного вывода элементов таймера. То есть единицы секунд у нас выводятся всегда с анимацией, так как они изменяются каждую секунду. Далее, десятки секунд нужно выводить с анимацией только тогда, когда единицы секунд равны 9 (sec[1] == 9), так как в этом случае десятки изменят свое значение. В противном случае десятки должны быть неподвижны. Значит если sec[1] == 9, то мы выводим десятки секунд при помощи функции animation($(«#sec0»),sec[0]), если же нет, то мы выводим десятки попросту используя метод html() ($(«#sec0»).html(sec[0]);).
Далее единицы минут, нужно выводить с анимацией только тогда, когда десятки секунд равны 5 (sec[0] == 5) и единицы секунд равны 9 (sec[1] == 9). Затем десятки минут также необходимо выводить с анимацией лишь тогда, когда единицы минут равны 9 (min[1] == 9 ) и десятки секунд равны 5 (sec[0] == 5) и единицы секунд равны 9 (sec[1] == 9).
Далее для часов и дней все по аналогии, просто добавляем проверку предыдущего числа, которое должно вывестись на экране. Конечно, немного запутано по началу, для восприятия, но здесь ничего сложного нет просто обычные манипуляции с числами.
Теперь приведу код функции, которая выводит на экран элементы таймера при помощи анимации:
//Функция для красивого отображения времени. function animation(vibor,param) { vibor.html(param) .css({‘marginTop’:‘-20px’,‘opacity’:‘0’}) .animate({‘marginTop’:‘0px’,‘opacity’:‘1’}); } |
Первым делом обратите внимание на параметры, которые необходимо передавать этой функции. Первый параметр — это обычная выборка jQuery, к примеру $(«#min0»). Второй параметр — это данные, которые мы вставляем в выбранный блок (а выборка у нас передается в переменную vibor). Затем мы пишем выборку (сохраненную в переменной vibor), далее вызываем метод html() – которому передаем параметром переменную param (а в ней сохранены данные для вставки). Затем вызываем метод css() с помощью которого задаем стили для нашей выборки. То есть мы немного поднимаем выбранный блок вверх, при помощи правила marginTop (обратите внимание как в этом методе записываются правила состоящие из двух слов), со значением в -20px и задаем полную прозрачность выбранного блока, то есть как бы скрываем данный блок. Далее вызываем метод animate(), который дает возможность нам, создавать пользовательскую анимацию опираясь на правила css, которые мы ему передаем. К примеру, если у блока ширина 100px и методу animate() мы передаем правило для ширины равное 300px. То на экране мы увидим плавное увеличение ширины блока до 300px.
Методу animate() мы передаем правила css, которые будут опускать выборку на свое обычное местоположение, а также убирать прозрачность в блоке с выборкой.
Итак, если обновить браузер, то на экране будет выведен вот такой вот таймер обратного отсчета.
Как мне кажется, таймер получился довольно неплохой и красивый.
Итак, на этом работа над таймером у нас закончена. Таймер получился полностью работоспособным и современным.
Если возникнут вопросы — пишите, постараемся на них ответить. Всего доброго! Удачного Вам кодирования и до новых встреч!!!
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее
Хотите узнать, что необходимо для создания сайта?
Посмотрите видео и узнайте пошаговый план по созданию сайта с нуля!
Смотреть
Друзья, всем привет. Сегодня хочу рассказать вам, как можно легко вставить таймер обратного отсчёта на любой сайт или блог. Как правило, таймер обратного отсчёта устанавливают на продающих страницах или страницах с бонусами и подарками. В общем, то идей где применить данный счётчик довольно много.
А ещё этот метод понадобится вам, если вы будете копировать продающею страницу партнёрского продукта. Это не просто копия партнёрского сайта во фрейме, — это полноценная копия, где Вы можете настроить цели Яндекс.Метрики и отслеживать подробную статистику.
Но, вот только если на партнёрских страницах стоят подобные счётчики, то они работать не будут. Потому, как помимо копирования html кода, css стилей и картинок, — нужно ещё и скрипты скопировать, а это не всегда удаётся сделать.
И поэтому этот метод позволит вам использовать таймер обратного отсчёта для любых целей.
Итак, на выбор я представлю вам три готовых решения, которые вы можете адаптировать под свои нужды.
Содержание
- Таймер обратного отсчёта на основе JavaScript
- Онлайн генератор таймера обратного отсчёта
- Таймер обратного отсчёта с сервисом proТаймер
Таймер обратного отсчёта на основе JavaScript
Этот метод хоть и требует определённого знания хотя бы HTMLи CSS, зато имеет максимум возможностей для настройки. Изменяя код htmlи настраивая стили css, можно легко подогнать данный счётчик под любой дизайн.
Шаг 1.
Скопируйте архив с моего Яндекс.Диска и распакуйте архив на своём компьютере. Скачать архив.
В архиве у вас будет 4 файла:
counter.html – собственно html каркас счётчика
jquery.downCount.js – скрипт обратного отсчёта
style.css – стили оформления
time.png – изображения для счётчика
Все необходимые изменения вы будете делать именно в этих файлах.
Шаг 2.
Прежде чем приступить к установке счётчика, необходимо установить дату намеченного события. Дата должна быть в будущем времени, иначе счётчик не будет отображаться. Помните это, на случай если счётчик не отображается на экране.
Установка даты осуществляется в файле counter.html. Необходимо просто изменить дату и время. Все необходимые подсказки в файле присутствуют.
Шаг 3.
Теперь необходимо скопировать всю папку с этими файлами на ваш сервер. Делайте это любым удобным для вас способом. Если у вас блог под управлением WordPress, загрузите папку в папку Вашей темы:
http://vashdomen.ru/wp-content/themes/vashatema/counter
Шаг 4.
В том месте, где необходимо отобразить таймер обратного отсчёта, нужно вставить вот такой код:
<center><iframe src="http://vashdomen.ru/wp-content/themes/vashatema/counter/counter.html" width="550" height="150" frameborder="0"></iframe></center>
Только учтите, делается вставка в редакторе кода. То есть вставляете код в html код той страницы, где нужно вывести таймер.
Так будет выглядеть таймер:
А вот и видеоурок «Как вставить таймер обратного отсчёта на сайт»
Онлайн генератор таймера обратного отсчёта
На мой взгляд, самый простой но, тем не менее, очень удобный сервис по созданию таймеров обратного отсчёта является TimeGenerator.
На выбор предлагается 4 варианта оформления счётчика. Нужно выбрать который подходит вам, и нажать на кнопку «Выбрать».
Далее нужно задать дату и время запланированного мероприятия и нажать на кнопку «Создать счётчик».
Копируете полученный код в буфер обмена (CTRL+C).
И завершающий этап, вставляете это код (CTRL+V) в нужном месте вашего шаблона. Опять же, делается это через редактор кода.
Пример таймера:
Таймер обратного отсчёта с сервисом proТаймер
Это платный сервис, который ориентирован на интернет-предпринимателей, которые чётко знают для чего им таймер обратного отсчёта. Сервис proТаймер предоставляет многофункциональные таймеры с помесячной и годичной оплатой.
Эти таймеры настраиваются и под сервисы e-mail рассылок и под индивидуального пользователя. Привязаны к IP, а не к браузеру и поэтому счётчик у пользователя не начинается заново, даже если он зайдёт с другого браузера.
На пробу (2 часа), Вы можете попробовать полный функционал этого сервиса.
Процедура не хитрая, регистрируетесь – получаете доступ и пользуетесь.
Ну что ж, друзья, вот такие вот таймеры обратного отсчёта вы можете использовать для своих целей. А то какой выбрать таймер для конкретной цели решать именно вам.
На этом сегодня у меня всё, желаю вам удачи. И конечно жду ваших комментариев. До встречи в следующих статьях.
С уважением, Максим Зайцев.
Устанавливаем таймер обратного отсчета времени
30 07 2015
18 комментариев
Приветствую вас, дорогие друзья, на моем блоге! В этой статье хочу вам рассказать о такой полезной штуке, как таймер обратного отсчета времени. Его можно легко сгенерировать в онлайне, чтобы установить на своем сайте или продающей странице. Также в статье вы найдете подробный видеоурок.
На самом деле таких бесплатных сервисов по созданию счетчиков несколько и в следующих статьях я обязательно расскажу о некоторых из них, но сегодня речь пойдет о онлайн-генераторе MegaTimer.
Почему именно этот сервис так привлек мое внимание?
Ну, во-первых, у него достаточно гибкие настройки, которые подойдут для большинства сайтов.
Во-вторых, цветовая палитра также очень разнообразна, да и сами счетчики подчас выглядят очень эффектно и необычно.
В-третьих, сервис настолько прост, что сгенерировать таймер обратного отсчета времени может абсолютно любой человек, даже не имеющий навыков работы с кодом.
Итак, давайте приступим. Для начала зайдем на MegaTimer.
Вот ссылочка: MegaTimer.ru
На главной странице вы можете выбрать основные настройки для будущего счетчика, а именно: цвет фона и формат времени, отметив галочками соответствующие пункты: дни, часы, минуты и секунды.
Прямо по центру страницы будет отображаться ваш таймер в том виде, как он будет выглядеть и на вашем сайте, все изменения будут отображаться мгновенно при регулировке настроек.
Чуть ниже отображаются вкладки-шаги настройки таймера. Можно выбрать его тип, далее дизайн, дополнительные параметры и получить код в завершении. Чтобы переключаться между вкладками можно либо нажимать левой кнопкой мыши на нужную вкладку, либо нажать кнопку «Следующий шаг» внизу страницы.
На первом шаге выбираем тип таймера из нескольких вариантов:
- до определенной даты, здесь же выставляем конец отсчета
- на промежуток времени, выбрав начало отсчета либо с момента первого посещения клиентом вашего сайта или прямо сейчас, чтобы отсчет пошел именно с момента открытия странички
- цикличный таймер будет запускаться автоматически в указанное вами время, можно задать время и день недели начала, а также продолжительность отсчета.
Кроме того, для таймеров до определенной даты и циклического типа можно выбрать вариант местного времени для пользователя, либо привязать счетчик к какому-либо часовому поясу.
Во вкладке «Дизайн» вы можете выбрать счетчик наиболее подходящий по внешнему виду для вашего сайта, для этого можете воспользоваться фильтрами, либо просто выбрать понравившийся таймер, нажав на него левой кнопкой мыши.
На вкладке «Настройки» можете отрегулировать цвета цифр и фона, толщину линий, тип шрифтов, размеры. Стоит обратить внимание, что для каждого варианта дизайна набор настроек может отличаться.
После установки всех параметров переходим в заключительную вкладку «Получить код». Теперь вам достаточно выделить строчку с сгенерированным кодом и скопировать ее, нажав правую кнопку мыши и выбрав команду «копировать».
Теперь вы можете вставить полученный код к себе на сайт, страницу захвата или продающий лендинг.
После небольших манипуляций у меня получился вот такой таймер обратного отсчета времени:
Все свой действия по созданию этого счетчика я пошагово показал вот в этом видеоуроке:
На сегодня все, дорогие друзья, спасибо, что уделили внимание, надеюсь, что статья была для вас полезной и теперь вы без труда сможете разместить красивый счетчик на вашем сайте.
Как всегда, в комментариях к статье жду ваших отзывов, понравилась ли статья и видео. До встречи в следующих статьях на страничках Блога Вебмастера!
Спасибо, что поделились статьей в социальных сетях!