效果

需求
| 需求 | |
|---|
| 1.对表盘刻度(其中需要注意的是关于其中会遇到许多定位与旋转问题) | 利用for循环引入li来刻度因为用css一个一个设置li太繁琐了(旋转我们采用transform属性) |
| 2.让表盘按照当前时间走起来 | 通过gethour等方法来获取实时时间,并利用定时器让它跑起来 |
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
ul{
list-style: none;
}
.time-clock{
width: 300px;
height: 300px;
border: 5px solid rgb(15, 16, 14);
border-radius: 50%;
margin: 100px;
position: relative;
left: 560px;
}
.time-clock ul{
width: 100%;
height: 100%;
position: relative;
}
.time-clock ul li{
width: 2px;
height: 8px;
background: rgb(0, 0, 0);
position: absolute;
left: 50%;
top:0;
transform-origin:center 150px ;
}
#hour {
width: 6px;
height: 50px;
background: rgb(149, 149, 245);
position: absolute;
left: 50%;
top: 50%;
margin:-50px 0 0 -3px;
transform-origin:center bottom ;
}
#minu{
width: 4px;
height: 80px;
background: rgb(164, 117, 209);
position: absolute;
left: 50%;
top: 50%;
margin:-80px 0 0 -2px;
transform-origin:center bottom;
}
#second{
width: 2px;
height: 120px;
background: rgb(243, 112, 112);
position: absolute;
left: 50%;
top: 50%;
margin:-120px 0 0 -1px;
transform-origin:center bottom;
}
#ball{
width: 20px;
height: 20px;
background: black;
position: absolute;
left: 50%;
top:50%;
border-radius: 50%;
transform:translate(-50%,-50%);
}
#main{
width: 700px;
height: 200px;
line-height: 300px;
margin: 0 auto;
text-align: center;
line-height: 200px;
background-color: rgb(235, 192, 192);
border-radius: 70px;
box-shadow: -10px -10px 20px rgba(255,255,255,.5),
10px 10px 20px rgba(70,70,70,.12);
}
#clock{
font-size: 60px;
-webkit-text-stroke: 6px white;
color: white;
letter-spacing: 25px;
}
</style>
</head>
<body>
<div class="time-clock">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<div id="hour"></div>
<div id="minu"></div>
<div id="second"></div>
<div id="ball"></div>
</div>
<div id="main">
<div id="clock">12:00:00</div>
</div>
<script>
var ul =document.querySelector(`ul`);
var hour =document.querySelector(`#hour`);
var minu =document.querySelector(`#minu`);
var second =document.querySelector(`#second`);
for(var i=0;i<60;i++){
var li = document.createElement(`li`);
li.style.transform = `rotate(`+i*6+`deg)`;
if(i%5==0){
li.style.height=`18px`
}
ul.appendChild(li);
}
function run(){
var date = new Date();
var iH = date.getHours();
var iM = date.getMinutes();
var iS = date.getSeconds();
hour.style.transform = `rotate(`+(iH*30+iM/2)+`deg)`
minu.style.transform = `rotate(`+iM*6+`deg)`
second.style.transform = `rotate(`+iS*6+`deg)`
}
run();
setInterval(run,1000);
let oClock=document.querySelector(`#clock`);
let addZero = (num) =>{
if(num>=10){
return num;
}else{
return `0${num}`;
}
}
let updateTime=()=>{
let now = new Date();
let time = addZero(now.getHours())+":"+
addZero(now.getMinutes())+":"+
addZero(now.getSeconds());
oClock.innerText = time;
}
updateTime();
setInterval(updateTime,1000);
</script>
</body>
</html>