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获得鼠标的坐标值的方法
Mar 13 Javascript
jQuery焦点图切换特效插件封装实例
Aug 18 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
Jan 03 Javascript
js与运算符和或运算符的妙用
Feb 14 Javascript
javascript学习总结之js使用技巧
Sep 02 Javascript
JS+CSS实现电子商务网站导航模板效果代码
Sep 10 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 jQuery
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
Aug 04 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 10 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
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
python实现汉诺塔方法汇总
2016/07/25 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Python 绘制可视化折线图
2020/07/22 Python
Python用Jira库来操作Jira
2020/12/28 Python
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
化石印度尼西亚在线商店:Fossil Indonesia
2019/03/11 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
大学生实习思想汇报
2014/01/12 职场文书
信息简报范文
2015/07/21 职场文书
被委托人身份证明
2015/08/07 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
深入理解python协程
2021/06/15 Python
Go语言并发编程 sync.Once
2021/10/16 Golang
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
Python字符串格式化方式
2022/04/07 Python