基于HTML5+CSS3实现简单的时钟效果
前端  /  管理员 发布于 7年前   191
目的:
利用html5,css实现钟摆效果
知识点:
1) 利用position/left/top和calc()实现元素的水平和垂直居中;
2) 利用CSS3的animation/transform/transform-origin属性定义动画;
3) 利用transform-origin实现旋转原点的圆心调整
废话不多说了,直接看代码吧,具体代码如下所示:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title></title> <style> li{list-style:none; } #box{width: 400px;height: 400px;position: absolute;top:calc(50% - 200px);left:calc(50% - 200px);border: 2px solid palegoldenrod; } #dial{width: 200px;height: 200px;position: absolute;top:calc(50% - 100px);left:calc(50% - 100px);border: 2px solid cyan;border-radius: 50%; } .scaleIndex{width: 4px;height: 12px;position: absolute;top: 0;left: calc(50% - 2px);background-color: gray;transform-origin: 2px 100px; } .angle30{transform : rotate(30deg);} .angle60{transform : rotate(60deg);} .angle90{transform : rotate(90deg);} .angle120{transform : rotate(120deg);} .angle150{transform : rotate(150deg);} .angle180{transform : rotate(180deg);} .angle210{transform : rotate(210deg);} .angle240{transform : rotate(240deg);} .angle270{transform : rotate(270deg);} .angle300{transform : rotate(300deg);} .angle330{transform : rotate(330deg);} #fixPoint{width: 10px;height: 10px;position: absolute;top:calc(50% - 5px);left:calc(50% - 5px);background-color: cadetblue;border-radius: 50%; } #hourHand{width: 6px;height: 70px;position:absolute;top: 40px;left: calc(50% - 3px);background-color: darkblue;transform-origin: 50% 60px; } #minuteHand{width: 4px;height: 75px;position:absolute;top: 35px;left: calc(50% - 2px);background-color: yellow;transform-origin: 50% 65px; } #secondHand{width: 2px;height: 90px;position:absolute;top: 20px;left: calc(50% - 1px);background-color: red;transform-origin: 50% 80px; } </style></head><body> <div id = "box"><div id = 'dial'> <ul id = "scale"> <li class = "scaleIndex"></li> <li class = "scaleIndex angle30"></li> <li class = "scaleIndex angle60"></li> <li class = "scaleIndex angle90"></li> <li class = "scaleIndex angle120"></li> <li class = "scaleIndex angle150"></li> <li class = "scaleIndex angle180"></li> <li class = "scaleIndex angle210"></li> <li class = "scaleIndex angle240"></li> <li class = "scaleIndex angle270"></li> <li class = "scaleIndex angle300"></li> <li class = "scaleIndex angle330"></li> </ul> <div id = "fixPoint"></div> <div id = "hourHand"></div> <div id = "minuteHand"></div> <div id = "secondHand"></div></div> </div><script type = 'text/javascript' src = 'js/jquery-3.2.1.js'></script><script type = "text/javascript">window.onload = function(){var hourHand = document.getElementById('hourHand');var minuteHand = document.getElementById('minuteHand');var secondHand = document.getElementById('secondHand');setInterval(function(){ var currentTime = new Date(); var hourValue = currentTime.getHours(); var hourAngle = hourValue / 24 * 360 + 'deg'; var minuteValue = currentTime.getMinutes(); var minuteAngle = minuteValue / 60 * 360 + 'deg'; var secondValue = currentTime.getSeconds(); var secondAngle = secondValue / 60 * 360 + 'deg'; console.log(hourAngle);// 方法一:利用jquery的css()增加属性var cmdHour = 'rotate('+ hourAngle +')';$('#hourHand').css({transform:'rotate('+ hourAngle +')'});var cmdMinute = 'rotate('+ minuteAngle +')';$('#minuteHand').css({transform:cmdMinute});var cmdSecond = 'rotate('+ secondAngle +')';$('#secondHand').css({transform:cmdSecond});// 方法二:利用DOM元素的style属性设置// hourHand.style.transform = 'rotate('+ hourAngle + ')';// minuteHand.style.transform = 'rotate('+ minuteAngle + ')';// secondHand.style.transform = 'rotate('+ secondAngle + ')'; },1000);} </script></body></html>
总结
以上所述是小编给大家介绍的基于HTML5+CSS3实现简单的时钟效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号