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 字符串连接[性能比较]
May 10 Javascript
jQuery Ajax之load()方法
Oct 12 Javascript
javascript检测对象中是否存在某个属性判断方法小结
May 19 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
May 08 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
Apr 18 Javascript
原生JS实现不断变化的标签
May 22 Javascript
JavaScript定义函数的三种实现方法
Sep 23 Javascript
原生JS实现手动轮播图效果实例代码
Nov 22 Javascript
vue获取验证码倒计时组件
Aug 26 Javascript
Vue.js的模板语法详解
Feb 16 Javascript
JS数组转字符串实现方法解析
Sep 04 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 cdata 处理(详细介绍)
2013/07/05 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
jquery实现拖动效果
2016/08/10 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
jquery实现input框获取焦点的方法
2017/02/06 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
ant design实现圈选功能
2019/12/17 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
python绘制简单折线图代码示例
2017/12/19 Python
Python对切片命名的实现方法
2018/10/16 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python pickle模块实现对象序列化
2019/11/22 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
合伙协议书
2014/04/23 职场文书
文艺演出策划方案
2014/06/07 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
React Fragment介绍与使用详解
2021/11/11 Javascript