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实现window.open不被拦截的解决方法汇总
Oct 30 Javascript
JS实现随机乱撞彩色圆球特效的方法
May 05 Javascript
Javascript中Array用法实例分析
Jun 13 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
js实现跨域的多种方法
Dec 25 Javascript
bootstrap table小案例
Oct 21 Javascript
jQuery实现checkbox的简单操作
Nov 18 jQuery
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
详解Angular6.0使用路由步骤(共7步)
Jun 29 Javascript
在NPM发布自己造的轮子的方法步骤
Mar 09 Javascript
vue+axios实现post文件下载
Sep 25 Javascript
js实现简单抽奖功能
Nov 24 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
文件上传类
2006/10/09 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php数组随机排序实现方法
2015/06/13 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示
2019/06/26 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
Python实现partial改变方法默认参数
2014/08/18 Python
Python中正则表达式的用法实例汇总
2014/08/18 Python
Python简单计算文件夹大小的方法
2015/07/14 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python爬虫文件下载图文教程
2018/12/23 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
个人自我鉴定怎么写
2013/10/28 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
学校师德师风整改方案
2014/10/28 职场文书
劳模事迹材料范文
2014/12/24 职场文书
公司车队管理制度
2015/08/04 职场文书
教师听课学习心得体会
2016/01/15 职场文书
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL