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中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
JQuery遍历DOM节点的方法
Jun 11 Javascript
JavaScript程序设计之JS调试
Dec 09 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
Nov 25 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
使用JavaScript实现node.js中的path.join方法
Aug 12 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
Vue实现仿iPhone悬浮球的示例代码
Mar 13 Javascript
关于vue-cli3打包代码后白屏的解决方案
Sep 02 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
jQuery ajax(复习)—Baidu ajax request分离版
2013/01/24 Javascript
js变换显示图片的实例
2013/04/16 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python如何获取服务器硬件信息
2017/05/11 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
Python制作exe文件简单流程
2019/01/24 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
人力资源行政经理自我评价
2013/10/23 职场文书
计算机专业毕业生自荐信
2013/12/31 职场文书
预备党员承诺书
2014/03/25 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
郭明义观后感
2015/06/08 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
如何拟写通知正文?
2019/04/02 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
react合成事件与原生事件的相关理解
2021/05/13 Javascript
React列表栏及购物车组件使用详解
2021/06/28 Javascript
Redis Lua脚本实现ip限流示例
2022/07/15 Redis