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文件中调用js的实现方法小结
Oct 23 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
Feb 27 Javascript
jquery在IE、FF浏览器的差别详细探讨
Apr 28 Javascript
js中单引号与双引号冲突问题解决方法
Oct 04 Javascript
IE6-8中Date不支持toISOString的修复方法
May 04 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
javascript鼠标滑动评分控件完整实例
May 13 Javascript
AngularJS实现标签页的两种方式
Sep 05 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
node 使用 async 控制并发的方法
May 07 Javascript
使用vue实现各类弹出框组件
Jul 03 Javascript
15 分钟掌握vue-next响应式原理
Oct 13 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
PHP 文件缓存的性能测试
2010/04/25 PHP
小文件php+SQLite存储方案
2010/09/04 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
谈谈JavaScript中的函数
2020/09/08 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
Python的Urllib库的基本使用教程
2015/04/30 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
优秀毕业生求职信
2014/06/05 职场文书
竞赛口号大全
2014/06/16 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP
mysql函数全面总结
2021/11/11 MySQL
JVM之方法返回地址详解
2022/02/28 Java/Android