js+SVG实现动态时钟效果


Posted in Javascript onJuly 14, 2018

本文实例为大家分享了js+SVG实现动态时钟效果展示的具体代码,供大家参考,具体内容如下

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时钟特效专题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 文件本身编码转换 图文教程
Oct 12 Javascript
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
在javascript将NodeList作为Array数组处理的方法
Jul 09 Javascript
js 创建快捷方式的代码(fso)
Nov 19 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
javascript检测页面是否缩放的小例子
May 16 Javascript
购物车选中得到价格实现示例
Jan 26 Javascript
js实现仿购物车加减效果
Mar 01 Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
vue.js+element 默认提示中英文操作
Nov 11 Javascript
vue实现通讯录功能
Jul 14 #Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 #Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 #Javascript
微信小程序实现自上而下字幕滚动
Jul 14 #Javascript
微信小程序scroll-view实现字幕滚动
Jul 14 #Javascript
微信小程序仿RadioGroup改变样式的处理方案
Jul 13 #Javascript
通过封装scroll.js 获取滚动条的值
Jul 13 #Javascript
You might like
微信公众平台天气预报功能开发
2014/07/06 PHP
简单实用的网站PHP缓存类实例
2014/07/18 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
jQuery的一些注意
2006/12/06 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
vue+axios实现post文件下载
2019/09/25 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
Python高并发和多线程有什么关系
2020/11/14 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
技术岗位竞聘演讲稿
2014/05/16 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
营销计划书范文
2015/01/17 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
记者节感言
2015/08/03 职场文书
丧事答谢词大全
2015/09/30 职场文书
个人业务学习心得体会
2016/01/25 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS