Стилизация таймера времени input type=time

Допустим у нас есть задача стилизовать обычный input с типом времени type=time на более удобным с интерфейсом переключения времени и крупным шрифтом.

Итоговый макет

Для начало отобразим HTML разметку

Время

Добавим CSS стили уберем дефолтовые стили и иконки input time

/* Timepicker */
.timepicker {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    font-size: 1rem;
    width: 100%;
    height: 30px;
    text-align: center;
    display: flex;
    justify-content: center;
	max-width:50px;
}

.timepicker-inner {
	 display: flex;
    justify-content: center;
    align-items: center;
	margin:0;
	height:30px;
	padding: 5px;
}

.timepicker::-webkit-calendar-picker-indicator {
    background: none;
    display: none
}

.timepicker-wrapper .timepicker-decrement,.timepicker-wrapper .timepicker-increment {
    background: transparent;
    border: none;
    cursor: pointer;
    height: 100%;
	padding-top: 4px;
}

.timepicker-wrapper .timepicker-decrement .icon-arrow-left,.timepicker-wrapper .timepicker-decrement .icon-arrow-right,.timepicker-wrapper .timepicker-increment .icon-arrow-left,.timepicker-wrapper .timepicker-increment .icon-arrow-right {
    color: #00a0dc
}

.timepicker-wrapper .timepicker {
    border: none;
    border-radius: 2px;
    background-color: #fff;
    text-align: center;
    font-weight: 700;
    color: #00a0dc;
    font-size: .875rem
}

.timepicker-wrapper .timepicker::placeholder,
.timepicker-wrapper .timepicker::-webkit-input-placeholder,
.timepicker-wrapper .timepicker:-moz-placeholder,.timepicker-wrapper .timepicker::-moz-placeholder,
.timepicker-wrapper .timepicker:-ms-input-placeholder  {
    text-align: center
}

.timepicker-wrapper .timepicker {
    width: 100%;
    text-align: center;
	padding:0px !important;
	font-size:16px;
	height:30px;
	color:#666 !important;
}

.floating-label {
	text-align:center;
}
/* Timepicker  end */
Результат выполнения

По умолчанию предлагаю установить текущее время пользователя для этого дополним js (JQuery) скрипт

var initTimepicker = function(){
var currentTime = new Date();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();
hours = String(hours).padStart(2, '0');
minutes = String(minutes).padStart(2, '0');
$('.timepicker-wrapper input.timepicker').val(hours + ':' + minutes);
}
initTimepicker();

С помощью функции String(hours).padStart(2, ‘0’); добавим в начало одно символьных значений ноль, для часов и минут таймера, присвоим получившееся значение к таймеру

Далее осталось дополнить навигацию по стрелочкам для уменьшения или увеличения таймера на 1 час времени для этого используем следующий код.

$('.timepicker-wrapper > .timepicker-inner > .timepicker-decrement, .timepicker-wrapper > .timepicker-inner > .timepicker-increment').click(function(){ // перключатель количества персон
			var inputTime = $(this).parent().find('input.timepicker');
			var currentVal = inputTime.val();
			var changeVal = $(this).hasClass('timepicker-decrement') ? (parseInt(currentVal) - 1) : (parseInt(currentVal) + 1);
			changeVal = String(changeVal).padStart(2, '0');
			if(changeVal <  0){
				changeVal = 23;
			}
			if(changeVal > 23){
				changeVal = '00';
			}
			inputTime.val( changeVal + ':00' );
		});

Допустимое значение не должно опускаться ниже 0 или быть более 23 часов.

Получаем рабочую
версию

Таймер времени стилизован и готов к работе! Надеюсь этот пост был полезен для Вас!

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии