本文实例为大家分享了js+SVG实现动态时钟效果展示的具体代码,供大家参考,具体内容如下
<!DOCTYPE HTML> <html> <meta charset="utf-8"> <head> <title>Analog Clock</title> <script> function updateTime() { var now = new Date(); // 当前时间 var min = now.getMinutes(); // 分钟 var hour = (now.getHours() % 12) + min/60; // 转行成可以在时钟上表示的时间 var seconds = now.getSeconds(); //秒钟 var minangle = min*6; // 6度表示一分钟 var hourangle = hour*30; // 30 表示一小时 var secrangel = seconds * 6; // 6度表示一秒钟 // 获取表示时钟时针的SVG元素 var minhand = document.getElementById("minutehand"); var hourhand = document.getElementById("hourhand"); var secondhand = document.getElementById("secondhand"); // 设置这些元素的SVG属性,将它们移动到钟面上 minhand.setAttribute("transform", "rotate(" + minangle + ",50,50)"); hourhand.setAttribute("transform", "rotate(" + hourangle + ",50,50)"); secondhand.setAttribute("transform", "rotate(" + secrangel + ",50,50)"); // 每秒钟更新下时钟显示时间 setTimeout(updateTime, 1000); } </script> <style> #clock { stroke: black; stroke-linecap: round; fill: #eef; } #face { stroke-width: 2px;} #ticks { stroke-width: 2px; } #hourhand {stroke-width: 3px;} #minutehand {stroke-width: 2px;} #secondhand{stroke-width: 1px;} #numbers { font-family: sans-serif; font-size: 7pt; font-weight: bold; text-anchor: middle; stroke: none; fill: black; } </style> </head> <body onload="updateTime()"> <!-- viewBox是坐标系,width和height是指屏幕大小 --> <svg id="clock" viewBox="0 0 100 100" width="500" height="500"> <defs> <!-- 定义下拉阴影的滤镜 --> <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%"> <feGaussianBlur in="SourceAlpha" stdDeviation="1" result="blur" /> <feOffset in="blur" dx="1" dy="1" result="shadow" /> <feMerge> <feMergeNode in="SourceGraphic"/><feMergeNode in="shadow"/> </feMerge> </filter> </defs> <circle id="face" cx="50" cy="50" r="45"/> <!-- 钟缅 --> <g id="ticks"> <!-- 12小时的刻度 --> <line x1='50' y1='5.000' x2='50.00' y2='10.00'/> <line x1='72.50' y1='11.03' x2='70.00' y2='15.36'/> <line x1='88.97' y1='27.50' x2='84.64' y2='30.00'/> <line x1='95.00' y1='50.00' x2='90.00' y2='50.00'/> <line x1='88.97' y1='72.50' x2='84.64' y2='70.00'/> <line x1='72.50' y1='88.97' x2='70.00' y2='84.64'/> <line x1='50.00' y1='95.00' x2='50.00' y2='90.00'/> <line x1='27.50' y1='88.97' x2='30.00' y2='84.64'/> <line x1='11.03' y1='72.50' x2='15.36' y2='70.00'/> <line x1='5.000' y1='50.00' x2='10.00' y2='50.00'/> <line x1='11.03' y1='27.50' x2='15.36' y2='30.00'/> <line x1='27.50' y1='11.03' x2='30.00' y2='15.36'/> </g> <g id="numbers"> <!-- 标记重要的几个刻度值--> <text x="50" y="18">12</text><text x="85" y="53">3</text> <text x="50" y="88">6</text><text x="15" y="53">9</text> </g> <!-- 初始绘制成竖直的指针,之后通过js来做旋转 --> <g id="hands" filter="url(#shadow)"> <!-- 给指针添加阴影 --> <line id="hourhand" x1="50" y1="50" x2="50" y2="25"/> <line id="minutehand" x1="50" y1="50" x2="50" y2="18"/> <line id="secondhand" x1="50" y1="50" x2="50" y2="11"/> </g> </svg> </body> </html>
更多JavaScript时钟特效点击查看:JavaScript时钟特效专题
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年11月13日
2024年11月13日
- 费玉清《天之大》SONY台湾版 [WAV+CUE][1G]
- 英雄联盟双城之战第二季主题曲谁唱的 双城之战2主题曲演唱歌手介绍
- 逆水寒2024双11活动有什么 2024双11特惠活动开始时间
- 宝可梦大集结国服和国际服有什么区别 大集结国服vs国际服
- YelenaEckemoff-RomanceoftheMoon(2024)[24-WAV]
- 群星《发烧醉乐坊太湖美(民乐典范)》[WAV+CUE]
- 中国发烧名盘《中国管弦-九州之韵》DTS[WAV]
- V社官宣推出白色限量版Steam Deck!11月18日上市
- 梦回2016!《守望先锋2》限时推出6v6怀旧模式
- 吴京谈《镖人》拍摄过程:演员们打得很爽 文戏也过瘾
- 林家谦.2024-ISFP【FLAC分轨】
- 群星.1996-摇滚柔情【正大国际】【WAV+CUE】
- 王菲.2000-寓言【EMI百代】【WAV+CUE】
- 群星《妙音纪念珍藏版贰》头版限量编号24K金碟 [低速原抓WAV+CUE][1G]
- 谭咏麟-《20世纪中华歌坛名人百集珍藏版》中唱[APE+CUE][1G]