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+XML 操作
Sep 20 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
基于JavaScript实现仿京东图片轮播效果
Nov 06 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
AngularJS指令用法详解
Nov 02 Javascript
JavaScript之promise_动力节点Java学院整理
Jul 03 Javascript
vue中的provide/inject的学习使用
May 09 Javascript
解决vue 项目引入字体图标报错、不显示等问题
Sep 01 Javascript
Javascript三种字符串连接方式及性能比较
May 28 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
Aug 01 Javascript
JS实现可用滑块滑动的缓动图代码
Sep 01 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 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 分页分组类
2009/12/10 PHP
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
javascript 快速排序函数代码
2012/05/30 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
12行javascript代码绘制一个八卦图
2015/04/02 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
Vue Router的手写实现方法实现
2020/03/02 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
Python深入学习之闭包
2014/08/31 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
关于赌博的检讨书
2014/01/08 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
租车协议书范本2014
2014/11/17 职场文书
2015年实习单位评语
2015/03/25 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
珍爱生命主题班会
2015/08/13 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python