如何用css动画做时钟,简易时钟动画

本文介绍了一种使用HTML和CSS创建简易时钟动画的方法。通过定义圆形表盘、添加刻度,并利用JavaScript实现指针随时间实时转动的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这就是我说的简易的表盘,有点简陋了 QaQ

bVR4AT?w=368&h=332

刚学习的时钟动画,觉得还有很多东西要去学习,有时候发现代码真是很神奇的。

首先呢 我们需要有一个圆的轮廓,这个就是定义一个div宽和高相同,然后用到了一个css3的属性 border-radius:50% 50% 当然只要是大于等于50%都是可以成圆的。

轮廓做出来后我们需要插入60个表盘上的刻度。这个时候有两种办法

1.可以用dom进行插入

var oDial=document.getElementById("dial");

for(var i=0;i<60;i++) {

var oLi=document.createElement("li");

oDial.appendChild(oLi);

}

2.可以用html结构插入

var Lis="";

for(var i=0;i<60;i++) {

Lis+="

";

}

oDial.innerHTML=Lis;

表盘刻度插入以后呢我们需要对这60个刻度进行定位写出旋转的原点然后每个刻度都在上一个刻度的基础上多旋转6° 我们需要写出表针用三个div分别表示时针 分针 秒针并且这三个需要在一个点上进行旋转 那就是三个div的底部

然后我们应该知道现在所处的时间是多少 这是我们需要用到js了。

创建一个Date的对象 并且用三个变量分别表示小时 分钟 秒并存放到一个函数中。

var now=new Date();

var hour=now.getHours();

var second=now.getSeconds();

var minute=now.getMinutes();

当得到时间以后 得到这三个dom对象

var oSecond=document.getElementById("second");

var oMinute=document.getElementById("minute");

var oHour=document.getElementById("hour");

当得到这三个dom对象时需要进行转动用到transform:rotate(度数)

oSecond.style.transform="rotate("+ second * 6+"deg)";

oMinute.style.transform="rotate("+ minute*6 +"deg)";

oHour.style.transform="rotate("+( hour*30+minute/60 *30 )+"deg)";

最后封装好的函数run的代码如下:

function run() {

var now=new Date();

var hour=now.getHours();

var second=now.getSeconds();

var minute=now.getMinutes();

oSecond.style.transform="rotate("+ second * 6+"deg)";

oMinute.style.transform="rotate("+ minute*6 +"deg)";

oHour.style.transform="rotate("+( hour*30+minute/60 *30 )+"deg)";

这样只能转动一次 我们需要开一个定时器把run这个函数放进去

setInterval(run,1000);

html代码:

css代码

* {

padding: 0;

margin: 0;

}

#clock {

width: 200px;

height: 200px;

border-radius: 50%;

border: 1px solid ;

margin: 200px auto;

position: relative;

}

li {

list-style: none;

width: 2px;

height: 6px;

background: black;

position: absolute;

left: 100px;

top: 0;

transform-origin: 0 100px;

}

#dial li:nth-child(5n+1) {

height: 10px;

}

#clock div {

transform-origin: bottom;

}

#hour{

width: 4px;

height: 40px;

background: #000000;

position: absolute;

left: 98px;

top: 60px;

}

#minute{

width: 4px;

height: 60px;

background: #999;

position: absolute;

left: 98px;

top: 40px;

}

#second{

width: 2px;

height: 70px;

background: #ff0000;

position: absolute;

left: 99px;

top: 30px;

}

全部代码:

Title

* {

padding: 0;

margin: 0;

}

#clock {

width: 200px;

height: 200px;

border-radius: 50%;

border: 1px solid ;

margin: 200px auto;

position: relative;

}

li {

list-style: none;

width: 2px;

height: 6px;

background: black;

position: absolute;

left: 100px;

top: 0;

transform-origin: 0 100px;

}

#dial li:nth-child(5n+1) {

height: 10px;

}

#clock div {

transform-origin: bottom;

}

#hour{

width: 4px;

height: 40px;

background: #000000;

position: absolute;

left: 98px;

top: 60px;

}

#minute{

width: 4px;

height: 60px;

background: #999;

position: absolute;

left: 98px;

top: 40px;

}

#second{

width: 2px;

height: 70px;

background: #ff0000;

position: absolute;

left: 99px;

top: 30px;

}

var oClock=document.getElementById("clock");

var oDial=document.getElementById("dial");

var oSecond=document.getElementById("second");

var oMinute=document.getElementById("minute");

var oHour=document.getElementById("hour");

var Lis="";

for(var i=0;i<60;i++) {

// var oLi=document.createElement("li");

// oDial.appendChild(oLi);

Lis+="

";

}

oDial.innerHTML=Lis;

function run() {

var now=new Date();

var hour=now.getHours();

var second=now.getSeconds();

var minute=now.getMinutes();

oSecond.style.transform="rotate("+ second * 6+"deg)";

oMinute.style.transform="rotate("+ minute*6 +"deg)";

oHour.style.transform="rotate("+( hour*30+minute/60 *30 )+"deg)";

}

run();

setInterval(run,1000);

写的不好 还望各位指出错误 共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值