Задача второго дня для JS30 Уэса Боса — создать часы, используя только JavaScript и CSS. Файл HTML относительно скудный, так как большая часть кода относится к вашей функции для установки даты и стиля ваших часов. Существует пять тегов <div>, созданных с именем класса, соответствующим части часов.

На картинке выше реализованы три тега <div> с именем класса для каждой части стрелки часов. Порядок не обязательно имеет значение, но я заказал его таким образом, чтобы ".hour-hand" всегда было видно над ".minute-hand", а ".second-hand" всегда было видно над обеими руками. Он обернут другим тегом <div> с ".clock-face", который также заключен в последний тег <div>, который является ".clock".

Что мне показалось наиболее интересным, так это то, что при реализации каждой стрелки поворот ее на 90 градусов (поскольку она начинается с направления в сторону, я хотел, чтобы она указывала вверх) приводит к тому, что стрелки каждый раз неправильно выравниваются и заканчиваются на 15 минут раньше их фактического времени, поэтому Я добавил еще 90 градусов, чтобы компенсировать эту проблему. С помощью transition-timing-function секундная стрелка имеет своего рода тик, и вы можете фактически изменить степень эффекта резиновой ленты, который она может иметь, чтобы имитировать тиканье секунд на реальных часах.

Проблема, с которой я столкнулся, заключалась в том, что каждый раз, когда секундная стрелка вращалась вокруг часов, она в конечном итоге касалась краев, и я не понимал, что, чтобы исправить это, вам нужно преобразовать циферблат, чтобы учесть высоту часов. секундная стрелка. Одна вещь, которую я нашел очаровательной, это свойство transform-origin. Поскольку стрелки начинаются в центре, я хотел, чтобы они вращались от своих концов, и transform-origin добился цели. Это позволило мне изменить положение преобразованного элемента! Вот и все, аналоговые часы, сделанные только с помощью JS и CSS. Живое демо можно найти здесь.