心血来潮,自己做一个时钟。话不多说,进入正题。 效果图:
我们可以看到,这个时钟由两个圆,三个指针和刻度组成,另外时针的指针要会动,时钟的背景是一张图片 圆和秒针,分针,时针的我们可以很容易想出来,设置div,用css中的border-radius,把圆和木棍画出来,但刻度怎么弄呢,可以看如下图:
可以看到,刻度是由6 根木棍做出来的,在这个基础上我们把小圆盖上去就可以,我们最终的目的是要把这个样子做出来,至于里面是什么样子的,不用太过在意,毕竟谁能看到?
html代码如下:
ini
<div class="clock">
<div class="out-clock-face">
<div class="marking marking-one"></div>
<div class="marking marking-two"></div>
<div class="marking marking-three"></div>
<div class="marking marking-four"></div>
<div class="inner-clock-face">
<div class="hand hour-hand"></div>
<div class="hand min-hand"></div>
<div class="hand second-hand"></div>
</div>
</div>
</div>
在css样式中需要做什么?主要做如下事情:在clock中用background-image: url('');
放背景图;在out-clock-face中设置position: relative;
相对定位,方便后面的布置;熟练运用transform: ;
将各个物体移动到对应的位置;颜色,长宽等自己设置;
最后,在js中我们需要让指针动起来,首先获取指针的对象,在,用var now = new Date() // 获取当前时间
,然后计算转动角度,最后setTime() // 定时器 setInterval(setTime, 1000)
代码如下:
ini
// 获取秒针
// 设置秒针旋转的角度
var secondHand = document.querySelector('.second-hand')
var minsHand = document.querySelector('.min-hand')
var hoursHand = document.querySelector('.hour-hand')
function setTime() {
var now = new Date() // 获取当前时间
// 读取秒
var seconds = now.getSeconds()
var secondDegress = seconds * 6 + 90
secondHand.style.transform = `rotate(${secondDegress}deg)`
// 读取分
var mins = now.getMinutes()
var minsDegress = mins * 6 + 90
minsHand.style.transform = `rotate(${minsDegress}deg)`
// 读取时
var hours = now.getHours()
var hoursDegress = hours % 12 * 30 + 90 + mins / 60 *30
hoursHand.style.transform = `rotate(${hoursDegress}deg)`
}
setTime()
// 定时器
setInterval(setTime, 1000)