Home > Article > Web Front-end > css3 clock making_html/css_WEB-ITnose
You need to know a few things before making a clock:
1. Calculation of point coordinates on a circle
2. Hour hand on the clock, Conversion of minute hand and second hand
Let’s look at the clock. The first thing that comes to mind is related to the angle . Then there is the carry relationship between the second hand, minute hand, and hour hand.
For example, h hours m minutes s seconds, the angles of the hour hand, minute hand, and second hand at this moment: (-90, because of the rotateZ angle rotation rule, the default is to start from the horizontal, counterclockwise, clockwise -)
ds = s*6-90;
dm = m*6 (s/60*6)-90;
dh = h*30 (m /60*30)-90;
3. js get time
The code is as follows:
/*Dial*/
.clock {
position: relative;
width: 200px;
height: 200px;
border-radius: 100%;
background-color: #000;
margin: 50px auto;
}
.pointer li.circle {
position: absolute;
top: 50%;
left: 50 %;
transform-origin: left center; /*The base point is set in the leftmost middle to ensure rotation around the center of the circle*/
background: #fff;
width: 10px;
height: 10px;
border-radius: 100%;
margin-top: -5px;
margin-left: -5px;
}
/*Scale*/
.line -hour li,
.line-min li {
position: absolute;
left: 50%;
top: 50%;
transform-origin: 0 0;
background -color: #fff;
}
.line-hour li {
width: 10px;
height: 2px;
}
.line-min li {
width : 5px;
height: 2px;
}
/*number*/
.number {
position: absolute;
height: 150px;
width: 150px;
left: 50%;
top: 50%;
transform: translate(-50%, -50%); /*Keep the number centered*/
font-size: 15px;
color: #fff;
}
.number li {
position: absolute;
transform: translate(-50%, -50%);
}
/*Pointer*/
.pointer li {
position: absolute;
top: 50%;
left: 50%;
transform-origin: left center; /*base point Set in the middle of the leftmost position, ensuring rotation around the center of the circle*/
background: #fff;
}
.pointer li.hour {
width: 45px;
height: 3px;
margin-top: -1px;
}
.pointer li.min {
width: 60px;
height: 2px;
margin-top: -1px;
}
.pointer li.sec {
width: 90px;
height: 1px;
margin-top: -1px;
background-color: red;
}
< /style>
Final effect: