JS html时钟制作代码分享


Posted in Javascript onMarch 03, 2017

时钟效果图:

JS html时钟制作代码分享

闲来无聊做了一个网页的时钟,效果模拟传统时钟的运行方式,

运用了html 的画布实现指针,背景图片引用了网络图片。

具体原理:

首先将时钟分为四个不同区域,对每个区域计算cos,sin 来确实指针顶点位置。在通过画布来绘画出指针。
通过setInterval 每秒刷新指针位置实现 传统机械表针的动态跳动。

本人是JS开发程序员,从业1年多。闲来无聊的简单页面,

欢迎大家提问,或者建议。共同进步

代码部分,直接复制HTML 文件中即可查看效果:

<!DOCTYPE html>
<html>
<head>
  <meta charset=utf-8>
  <title>clock</title>
</head>
<body style="color:green; <!--background-image:url('http://image.lxway.com/upload/b/f0/bf0d97dcee487096548e6edbc89d4963_thumb.png');--> background-size:100%; background-repeat: no-repeat; background-attachment:fixed">
  <div style="width: 900px; height: 900px; margin-top: 50px; margin-left: 50px;">
    <div style="position: absolute; left:119px;top: 193px; width: 900px; height: 900px; background-image:url('http://image.lxway.com/upload/b/f0/bf0d97dcee487096548e6edbc89d4963_thumb.png'); background-repeat: no-repeat; z-index: -1;">
    </div>
    <canvas id="t" width="800" height="800"></canvas>
    <div style="position: absolute; left:118px;top: 464px; width: 100px; height: 200px; background-color: white; background-repeat: no-repeat; z-index: 10;">
    </div>
  </div>
  <script language="javascript">
        var s = setInterval(moveI, 1000);
        function moveI() {
          var c = document.getElementById("t");
          var pc = c.getContext("2d");
          c.height = c.height;
          //秒
          pc.lineWidth = 3;
          pc.strokeStyle = 'rgba(255,0,0,0.8)';
          var now = new Date();
          var sindex = getxy(150, now.getSeconds());
          pc.moveTo(400, 400);
          pc.lineTo(sindex.x, sindex.y);
          pc.stroke();
          pc.beginPath();
          //分
          pc.lineWidth = 7;
          pc.strokeStyle = 'rgba(50,50,50,0.8)';
          var mindex = getxy(120, now.getMinutes() + (now.getSeconds() / 60));
          pc.moveTo(400, 400);
          pc.lineTo(mindex.x, mindex.y);
          pc.stroke();
          pc.beginPath();
          //时
          pc.lineWidth = 10;
          pc.strokeStyle = 'rgba(0,0,0,0.8)';
          var hindex = getxy(80, ((now.getHours() > 12 ? now.getHours() - 12 : now.getHours()) + (now.getMinutes() / 60)) * 5);
          pc.moveTo(400, 400);
          pc.lineTo(hindex.x, hindex.y);
          pc.stroke();
        };

        function getxy(r, t) {
          //计算分区 0,1,2,3
          var a = parseInt(t / 15);
          //分区角度
          t = t - 15 * a;
          var y;
          var x;
          //基于分区的坐标计算
          switch (a) {
            case 0:
              y = r - (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r + (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            case 1:
              y = r + (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r + (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            case 2:
              y = r + (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r - (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            case 3:
              y = r - (r * Math.sin(2 * Math.PI / 360 * 90 * (t / 15)));
              x = r - (r * Math.cos(2 * Math.PI / 360 * 90 * (t / 15)));
              break;
            default:
              break;
          }
          y = (400 - r) + y;
          x = (400 - r) + x;
          return {
            'x': x,
            'y': y
          };
        };
  </script>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js下用gb2312编码解码实现方法
Dec 31 Javascript
通过jquery 获取URL参数并进行转码
Aug 18 Javascript
jquery动感漂浮导航菜单代码分享
Apr 15 Javascript
js实现统计字符串中特定字符出现个数的方法
Aug 02 Javascript
js实现股票实时刷新数据案例
May 14 Javascript
利用JS判断客户端类型你应该知道的四种方法
Dec 22 Javascript
详解如何使用webpack打包JS
Jun 21 Javascript
解决webpack dev-server不能匹配post请求的问题
Aug 24 Javascript
vue-router传参用法详解
Jan 19 Javascript
详解Vue 全局变量,局部变量
Apr 17 Javascript
基于Vue实现微前端的示例代码
Apr 24 Javascript
vue内置组件keep-alive事件动态缓存实例
Oct 30 Javascript
AngularJS路由实现页面跳转实例
Mar 03 #Javascript
vue2笔记 — vue-router路由懒加载的实现
Mar 03 #Javascript
求js数组的最大值和最小值的四种方法
Mar 03 #Javascript
jQuery控制元素隐藏和显示
Mar 03 #Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
Mar 03 #Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
Mar 03 #Javascript
angular+bootstrap的双向数据绑定实例
Mar 03 #Javascript
You might like
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
浅谈JS函数节流防抖
2017/10/18 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
python 实现敏感词过滤的方法
2019/01/21 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
django的ORM操作 增加和查询
2019/07/26 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
新课培训心得体会
2014/09/03 职场文书
教师继续教育反思周记
2015/06/25 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
Python集合的基础操作
2021/11/01 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python