其实主要难点在于最左边的小时钟
指针的实现方式很简单,就是通过绝对定位将指针移到中间,然后以下边中间的位置为圆心旋转即可。代码如下:
复制代码
复制代码
效果
秒针转起来的效果也很简单,通过定时器setInterval每隔一秒更新秒针的角度。
复制代码
setInterval(() => {
let secAngle = new Date().getSeconds() * 6
let pointer = document.getElementsByClassName('pointer')[0]
pointer.style.transform = `rotateZ(${secAngle}deg)`
}, 1000)
复制代码
现在就可以看到指针一跳一跳的了。但是呢,我希望指针平缓的走,那么可以设置CSS的 transition 属性
transition: all linear 1s;
安静的等待1s 会发现,当秒针从59到60的时候,会反向旋转。因为此时角度是变小的,360->0,所以考虑当指针刚好走一圈的那一秒,去除 transition 属性。
这样虽然不会倒转了,但是那一秒还是会蹦一下。
于是又想到每100ms更新一次,这样到360度时蹦的那一下就不明显了。感觉没有直接解决问题,是绕开了。。
这样一个会围绕圆心转的指针就做完了。代码如下:
复制代码
复制代码
现在的问题是 表盘的刻度。实现12个小竖线,然后分别旋转。虽然我没有less不可以使用for循环,但是react可以循环啊……定位还是绝对定位,和指针一样。
复制代码
Hello World
复制代码
效果:
这样完全没有难点了(本来就没有好吧……
完整代码如下:
复制代码
Hello World
https://www.cnblogs.com/wenruo/p/9561815.html