Цифровые часы с будильником на JavaScript + HTML
Вы когда-нибудь хотели создать свой собственный будильник, но вам не хватало необходимых инструментов и оборудования? Почему бы не сделать его с помощью JavaScript и HTML?
В этом уроке я покажу вам, как сделать свой собственный будильник, который дает вам возможность отображать время в цифровом виде и устанавливать работающий будильник. Простой код, использующий только ванильный JavaScript, HTML и CSS.
Создайте свой собственный будильник всего за 30 минут.
Посмотреть это на YouTube
Структура файла
index.html
/sass
style.scss
/js
clock.js
/css (generated by Sass)
style.css
style.min.css
/sounds
alarm.mp3
bg.jpg
logo.png
Наш HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Clock with Alarm</title>
<link rel="stylesheet" href="/css/style.min.css">
</head>
<body>
<div class="main">
<div id="time"></div>
<div id="alarm">
<span></span>
<button type="button" id="turnoff_alarm">Turn Off Alarm</button>
<audio id="alarm_audio" loop muted autoplay src="/sounds/alarm.mp3"></audio>
</div>
</div>
<script src="/js/clock.js"></script>
</body>
</html>
Базовый HTML-код прост и имеет раздел времени, раздел будильника, место для звука будильника и кнопку.
Наши часы JS-класс
class Clock { constructor(timeDiv, alarmDiv, alarmTime) { this.timeDiv = timeDiv; // div to display time this.alarmDiv = alarmDiv; // div to display alarm this.alarmTime = alarmTime; // time to set alarm this.alarmAudio = document.querySelector(this.alarmDiv + " #alarm_audio"); // audio element to play alarm
// set time on initial load let tim = document.querySelector(this.timeDiv); let t = new Date(); let time = t.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", }); tim.innerHTML = time;
// set alarm on initial load this.setAlarm();
// update time every second setInterval(this.updateTime.bind(this), 1000); }
updateTime() { let tim = document.querySelector(this.timeDiv); let t = new Date(); let time = t.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", }); tim.innerHTML = time;
if (time == this.alarmTime) { this.playAlarm(); } }
setAlarm() { const alarm = document.querySelector(this.alarmDiv + " span"); alarm.innerText = `Alarm (${this.alarmTime})`; }
/** * Play alarm when the time matches the alarm time */ playAlarm() { this.alarmAudio.currentTime = 0; // reset audio to start this.alarmAudio.muted = false; // unmute audio this.alarmAudio.volume = 0.5; // set volume this.alarmAudio.play(); // play audio
document.querySelector(this.alarmDiv + " button").style.display = "block"; document .querySelector(this.alarmDiv + " button") .addEventListener("click", () => this.turnOffAlarm(this.alarmAudio)); document.body.style.background = "#38a4ef"; }
turnOffAlarm(alarmAudio) { alarmAudio.muted = true; // mute audio document.querySelector(this.alarmDiv + " button").style.display = "none"; document.body.style.background = 'url("/bg.jpg")'; } }
Это простой класс, который собирает переменные для элементов div и времени, которые будут использоваться в проекте. После того, как у него есть переменные, он создает часы и добавляет текущее время, которое меняется каждую секунду, чтобы реализовать цифровые часы на основе секунд.
Затем он устанавливает сигнал тревоги на основе переменной this.alarmTime
, отправленной в конструктор.
Наконец, он реализует второе изменение, используя setInterval
. Это позволит перезапускать код каждую секунду.
Основываясь на следующем коде, он проверит, нужно ли ему воспроизводить сигнал тревоги.
if (time == this.alarmTime) {
this.playAlarm();
}
Если время равно значению, заданному пользователем, выполняется метод playAlarm
. Метод playAlarm
запускает фоновую музыку и меняет цвет фона. Как только это будет сделано, он добавляет кнопку, чтобы пользователь мог отключить будильник, и весь процесс начинается снова.
Чтобы инициализировать класс Clock, вам просто нужно добавить следующий код либо в ваш основной файл JS, либо в ваш HTML, если вы копируете мой код как есть:
new Clock('#time', '#alarm', '02:38:00 PM')
Наши стили часов
Стили часов просты и просто отображают фоновое изображение с крупноформатным текстом для самих часов.
body { font-family: 'Fjalla One', sans-serif; text-align:center; background-color:#000; position: relative; height:100vh; overflow:hidden; background-image:url('/bg.jpg'); background-size:cover; }
.main { position: absolute; top:50%; left:50%; transform: translate(-50%, -60%); width:100%; height:100%; display: flex; justify-content: center; align-items: center; flex-direction:column; #time { color:#fff; text-shadow: 3px 3px 0px #6d6d6d; font-size:100px; margin: 1rem 0; } #alarm { color: rgba(255,255,255,.5); font-size:30px; button { background-color: transparent; border:1px solid #fff; color:#fff; padding:15px 20px; font-size:20px; cursor: pointer; width:250px; margin:20px auto; display:none; } } }
Заключение
Это даст вам простые часы с функцией будильника, которую вы можете использовать на своем веб-сайте или в качестве простого будильника на своем локальном компьютере.
ПРИМЕЧАНИЕ Чтобы использовать элемент audio с современными политиками браузера, необходимо взаимодействие с пользователем. Если вы используете это как личный будильник, вы можете просто «Разрешить аудио» в настройках вашего сайта в браузере. Если вы используете это как общедоступный будильник, вам нужно будет добавить на страницу кнопку, которая позволит пользователю взаимодействовать с аудиоэлементом.