HTML5实现一个时钟动画,利用html5制作一个时钟动画效果

b4ce027100669b7a8dfc9358579fa5fb.png

我们先来看下效果图(不考虑颜色搭配):

(学习视频分享:html5视频教程)

a1f3ed09a2e7a4ff20e3fdff3240a80b.png

我们首先要理解如何去实现这个时钟,暂时不要考虑动画,学着将问题进行拆解,一步一步实现。

首先我们需要画个方形,有个边框,给一个圆角就可以实现最外边的圆环再通过一个长的矩形旋转多个就可以实现刻度

82b8c3e13cc63e5f3172270d794ecd7a.png

只要再画一个白色圆面去覆盖就可以实现标准的刻度

236e33e86776b1a24aba13e7b4a85258.png

最后再加上三个矩形和中间的小圆面就可以实现时钟的初始状态了

代码实现

以上过程理解了之后,代码实现就简单多了,唯一需要考虑的就是代码的优化问题,以下为了简单明了每一步是如何实现,存在很多重复的代码。

关于动画,我们只需要设置旋转动画就可以了,时分秒针的动画只需要改变不同的时间就可以了。

具体细节注意见代码:

时钟

*{

padding: 0;

margin: 0;

}

.clock{

width: 300px;

height: 300px;

border: 10px solid #ccc;

/*百分比参照的是实际宽高*/

border-radius: 50%;

margin: 20px auto;

position: relative;

}

.line{

width: 8px;

height: 300px;

background-color: #ccc;

position: absolute;

/*实现居中*/

/*参照父元素的宽*/

left: 50%;

top: 0;

/*参照元素本身*/

transform: translate(-50%,0);

/*保留,否则会被覆盖*/

}

.line2{

transform: translate(-50%,0) rotate(30deg);

}

.line3{

transform: translate(-50%,0) rotate(60deg);

}

.line4{

transform: translate(-50%,0) rotate(90deg);

}

.line5{

transform: translate(-50%,0) rotate(120deg);

}

.line6{

transform: translate(-50%,0) rotate(150deg);

}

.cover{

width: 250px;

height: 250px;

border-radius: 50%;

background-color: #fff;

position: absolute;

left: 50%;

top: 50%;

transform: translate(-50%,-50%);

}

.hour{

width: 6px;

height: 80px;

background-color: red;

position: absolute;

left: 50%;

top: 50%;

transform: translate(-50%,-100%);

/*设置轴心*/

transform-origin: center bottom;

/*动画*/

-webkit-animation: move 43200s linear infinite;

}

.minute{

width: 4px;

height: 90px;

background-color: green;

position: absolute;

left: 50%;

top: 50%;

transform: translate(-50%,-100%);

/*设置轴心*/

transform-origin: center bottom;

/*动画*/

-webkit-animation: move 3600s linear infinite;

}

.second{

width: 2px;

height: 100px;

background-color: blue;

position: absolute;

left: 50%;

top: 50%;

transform: translate(-50%,-100%);

/*设置轴心*/

transform-origin: center bottom;

/*动画*/

-webkit-animation: move 60s infinite steps(60);

/*linear与step(60)重复*/

}

.center{

width:20px;

height:20px;

background-color: #ccc;

border-radius: 50%;

position: absolute;

left: 50%;

top: 50%;

transform: translate(-50%,-50%);

}

/*创建移动动画*/

@keyframes move{

0%{

transform: translate(-50%,-100%) rotate(0deg);

}

100%{

transform: translate(-50%,-100%) rotate(360deg);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用CSS和JavaScript来实现一个动画时钟HTML主要用于布局和结构。以下是一个简单的示例代码: ```html <!DOCTYPE html> <html> <head> <title>Analog Clock</title> <style> .clock { position: relative; width: 200px; height: 200px; margin: 50px auto; border-radius: 50%; background-color: #f2f2f2; box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); } .hour-hand, .minute-hand, .second-hand { position: absolute; top: 50%; left: 50%; transform-origin: bottom center; background-color: #333; } .hour-hand { width: 6px; height: 50px; margin-left: -3px; border-radius: 6px 6px 0 0; transform: rotate(30deg); } .minute-hand { width: 4px; height: 70px; margin-left: -2px; border-radius: 4px 4px 0 0; transform: rotate(45deg); } .second-hand { width: 2px; height: 90px; margin-left: -1px; border-radius: 2px 2px 0 0; transform: rotate(60deg); } .dot { position: absolute; top: 50%; left: 50%; width: 12px; height: 12px; margin: -6px; border-radius: 50%; background-color: #333; } </style> </head> <body> <div class="clock"> <div class="hour-hand"></div> <div class="minute-hand"></div> <div class="second-hand"></div> <div class="dot"></div> </div> <script> function updateClock() { var now = new Date(); var hour = now.getHours(); var minute = now.getMinutes(); var second = now.getSeconds(); var hourHand = document.querySelector('.hour-hand'); var minuteHand = document.querySelector('.minute-hand'); var secondHand = document.querySelector('.second-hand'); var hourAngle = (hour % 12) * 30 + minute / 2; var minuteAngle = minute * 6; var secondAngle = second * 6; hourHand.style.transform = 'rotate(' + hourAngle + 'deg)'; minuteHand.style.transform = 'rotate(' + minuteAngle + 'deg)'; secondHand.style.transform = 'rotate(' + secondAngle + 'deg)'; } setInterval(updateClock, 1000); </script> </body> </html> ``` 这个示例代码使用CSS和JavaScript来实现一个模拟时钟,其中CSS用于布局和样式,JavaScript用于更新时钟的指针位置。在HTML中,我们定义了一个包含时钟指针和中心点的容器元素,然后使用CSS来设置容器的样式和指针的样式。在JavaScript中,我们使用setInterval函数每秒钟更新一次指针的位置,然后使用CSS的transform属性来旋转指针。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值