lanzhusiyu 2020-07-18
话不多说,先上效果图
本demo没使用JavaScript,纯CSS3实现,下面是完整代码
<html> <head> <meta charset="UTF-8"> <title>时钟</title> <style type="text/css"> .screen{ width: 400px; height: 400px; border-radius: 50%; border: 3px solid black; margin: 200px auto; position: relative; } .line{ width: 3px; height: 400px; background-color: #333333; position: absolute; left: 200px; } .line:nth-child(2){ transform: rotateZ(30deg); } .line:nth-child(3){ transform: rotateZ(60deg); } .line:nth-child(4){ transform: rotateZ(90deg); } .line:nth-child(5){ transform: rotateZ(120deg); } .line:nth-child(6){ transform: rotateZ(150deg); } .cover{ width: 380px; height: 380px; border-radius: 50%; position: absolute; left: 10px; top: 10px; background-color: #fff; } .hour{ width: 8px; height: 80px; background-color: red; position: absolute; top: 120px; left: 196px; transform-origin: bottom; animation: spin 43200s linear infinite; } .min{ width: 6px; height: 120px; background-color: yellow; position: absolute; top: 80px; left: 197px; transform-origin: bottom; animation: spin 3600s linear infinite; } .second{ width: 4px; height: 150px; background-color: green; position: absolute; top: 50px; left: 198px; transform-origin: bottom; animation: spin 60s linear infinite; animation-timing-function: steps(60); } .center{ width: 40px; height: 40px; border-radius: 50%; background-color: orange; position: absolute; top: 180px; left: 180px; } @keyframes spin{ from{ transform: rotateZ(0deg); } to{ transform: rotateZ(360deg); } } </style> </head> <body> <div class="screen"> <div class="line"></div> <div class="line"></div> <div class="line"></div> <div class="line"></div> <div class="line"></div> <div class="line"></div> <div class="cover"></div> <div class="second"></div> <div class="min"></div> <div class="hour"></div> <div class="center"></div> </div> </body> </html>
其实很简单,就是用div结合CSS3的旋转属性把时分秒针画出来,再把刻度线等画一下;再利用CSS3的动画属性让3根针动起来即可。有兴趣的小伙伴也可以结合js代码获取当前时间并设定3根针的初始角度,让本demo变成一个实时的时钟哦~
女神镇楼