|
|

楼主 |
发表于 2022-3-21 13:00
|
显示全部楼层
本帖最后由 马黑黑 于 2022-3-21 13:24 编辑
代码分享:
<style type="text/css">
#outer {
margin: auto;
display: flex;
justify-content: center;
width: 200px;
height: 200px;
border: 10px solid rgba(210, 105, 30, .7);
border-radius: 50%;
background: rgba(128, 128, 0, 0.6);
font: 12px/13px Arial;
position: relative;
}
#outer::before {
content: 'HUACHAO';
position: absolute;
width: 50%;
height: 20px;
text-align: center;
top: 75%;
}
#outer div { position: absolute; }
#nyrx {
color: #ddd;
top: 25%;
text-align: center;
}
.kedu {
width: 3px;
height: 4px;
background: #ddd;
transform-origin: 50% 100px;
}
#sec-hand, #min-hand, #hr-hand {
background: white;
bottom: 50%;
transform-origin: 50% 100%;
}
#sec-hand {
width: 2px;
height: 48%;
background: red;
z-index: 10;
}
#sec-hand::before {
content:'';
position: absolute;
background: #eee;
width: 12px;
height: 12px;
border-radius: 50%;
bottom: -4px;
left: -5px;
}
#min-hand {
width: 4px;
height: 45%;
z-index: 9;
}
#hr-hand {
width: 6px;
height: 40%;
z-index: 8 ;
}
</style>
<div id="outer">
<div id="nyrx"></div>
<div id="sec-hand"></div>
<div id="min-hand"></div>
<div id="hr-hand"></div>
</div>
<script>
document.getElementById("outer").innerHTML += setKedu();
godPush();
function godPush() {
/* 上帝之手 : 时钟的第一推动力→无尽永动
① 确定初始角度并旋转指针
② 调用创建@keyframes的函数
③ 现实年月日星期信息
*/
let dayStr = "日一二三四五六";
let now = new Date();
let hr = now.getHours() > 12 ? now.getHours() - 12 : now.getHours(),
min = now.getMinutes(),
sec = now.getSeconds(),
msec = now.getMilliseconds(),
yy = now.getFullYear() + "年",
mm = (now.getMonth() + 1) + "月",
dt = now.getDate() + "日",
dd = "<br>星期" + dayStr.charAt(now.getDay());
let hDeg = hr * 30 + (min * 6 / 12),
mDeg = min * 6 + (sec * 6 / 60),
sDeg = sec * 6 + (msec * 0.36 / 1000);
document.getElementById("nyrx").innerHTML = yy + mm + dt + dd;
document.getElementById("hr-hand").style.transform = "rotate(" + hDeg + "deg)";
document.getElementById("min-hand").style.transform = "rotate(" + mDeg + "deg)";
document.getElementById("sec-hand").style.transform = "rotate(" + sDeg + "deg)";
createkeyFrames("sec-hand", "secRoll", 60,sDeg);
createkeyFrames("min-hand", "minRoll", 3600,mDeg);
createkeyFrames("hr-hand", "hrRoll", 43200,hDeg);
}
function setKedu() {
/* 绘制60个刻度 被5整除为整点刻度 */
let str = "", bigKedu = "";
for(i = 0; i < 60; i ++) {
bigKedu = i % 5 == 0 ? "background: #eee; width: 6px; height: 8px;" : "";
str += "<div class='kedu' style='transform: rotate(" + (i * 6) + "deg);" + bigKedu + "'></div>";
}
return str;
}
function createkeyFrames(el,name,dur,angle) {
/* 创建keyframes动画
el : 元素id名称
name : keyframes名称
dur : duration 动画运行周期
angle : 初始角度
*/
let kStr = '@keyframes ' + name + '{ to { transform: rotate(' + (360 + angle) + 'deg) } }';
let style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = kStr;
document.getElementById(el).appendChild(style);
document.getElementById(el).style.animation = name + " " + dur + "s linear infinite";
}
</script>
|
评分
-
| 参与人数 1 | 威望 +30 |
金钱 +60 |
经验 +30 |
收起
理由
|
加林森
| + 30 |
+ 60 |
+ 30 |
赞一个! |
查看全部评分
|