简易时钟

332 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

一寸光阴一寸金,寸金难买寸光阴。我们都知道时间很珍贵,所以我们对时间的工具也很熟悉,比如手机、钟表等。这篇文章就是来实现一个简易时钟的。

绘制

结构

绘制时钟的时候,我们需要表盘、时针、分针、秒针,所以我们需要一下元素:

<div class="time">
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <nav class="hours"></nav>
    <nav class="minutes"></nav>
    <nav class="seconds"></nav>
</div>

样式

.time{
        position: relative;
        width: 400px;
        height: 400px;
        margin:60px auto;
        border: 1px solid red;
        background: lightgray;
}
span{
        display:inline-block;
        position: absolute;
        width:2px;
        height: 20px;
        background: black;
        left: 50%;
        margin-left:-1px;
        top: 50%;
        margin-top: -10px;
        transform: translateY(150px);
        color: white;
        text-align: center;
        line-height: 20px;
        font-size: 16px; 
}
span:nth-child(2){
        transform: rotateZ(30deg)  translateY(150px);
}
span:nth-child(3){
        transform: rotateZ(60deg) translateY(150px);
}
span:nth-child(4){
        transform: rotateZ(90deg) translateY(150px);
}
span:nth-child(5){
        transform: rotateZ(120deg) translateY(150px);
}
span:nth-child(6){
        transform: rotateZ(150deg) translateY(150px);
}
span:nth-child(7){
        transform: rotateZ(180deg) translateY(150px);
}
span:nth-child(8){
        transform: rotateZ(210deg) translateY(150px);
}
span:nth-child(9){
        transform: rotateZ(240deg) translateY(150px);
}
span:nth-child(10){
        transform: rotateZ(270deg) translateY(150px);
}
span:nth-child(11){
        transform: rotateZ(300deg) translateY(150px);
}
span:nth-child(12){
        transform: rotateZ(330deg) translateY(150px);
}
.time>nav{
        position: absolute;
        left: 50%;
        top: 50%;	 
}
.hours{
        width:4px;
        height: 50px;
        background: black;
        margin-left: -2px;
        margin-top: -48px;
        transform-origin: 2px 48px;
}
.minutes{
        width:4px;
        height:100px;
        background:white;
        margin-left: -2px;
        margin-top: -98px;
        transform-origin: 2px 98px;
}
.seconds{
        width:2px;
        height:150px;
        background: yellow;
        margin-left: -1px;
        margin-top: -148px;
        transform-origin: 1px 148px;
}

定时获取时间

var timer=setInterval(fun,1000);
function fun(){
        var time=new Date();
        var hours=time.getHours();
        var minutes=time.getMinutes();
        var seconds=time.getSeconds();
        var ms=time.getMilliseconds();
        document.querySelector(".hours").style.transform='rotateZ('+(hours*30+minutes/2+seconds/120)+'deg)';
        document.querySelector(".minutes").style.transform='rotateZ('+(minutes*6+seconds/10)+'deg)';
        document.querySelector(".seconds").style.transform='rotateZ('+seconds*6+'deg)';
}

总结

时钟很好制作,但人生很难把握时间,且行且珍惜。