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 相关文章推荐
ajax更新数据后,jquery、jq失效问题
Mar 16 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
微信小程序 获取相册照片实例详解
Nov 16 Javascript
原生js实现对Ajax的封装(仿jquery)
Jan 22 Javascript
JS实现商品筛选功能
Aug 19 Javascript
微信小程序实现省市区三级地址选择
Jun 21 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
VUE项目中加载已保存的笔记实例方法
Sep 14 Javascript
Flutter实现仿微信底部菜单栏功能
Sep 18 Javascript
基于JS实现简单滑块拼图游戏
Oct 12 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
Vue formData实现图片上传
2019/08/20 Javascript
[02:40]2018年度DOTA2最佳新人-完美盛典
2018/12/16 DOTA
Python中使用HTMLParser解析html实例
2015/02/08 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
python中import学习备忘笔记
2017/01/24 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
python实现IOU计算案例
2020/04/12 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
软件研发工程师岗位职责
2014/09/30 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
五一劳动节活动总结
2015/02/09 职场文书
质量保证书怎么写
2015/02/27 职场文书
给校长的建议书范文
2015/09/14 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书