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 基于面向对象的javascript
Feb 16 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
Mar 04 Javascript
jquery实现邮箱自动补全功能示例分享
Feb 17 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
js和jQuery设置Opacity半透明 兼容IE6
May 24 Javascript
ajax与json 获取数据并在前台使用简单实例
Jan 19 Javascript
javascript实现复选框全选或反选
Feb 04 Javascript
form表单序列化详解(推荐)
Aug 15 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
vue webpack重写cookie路径的方法
Jul 10 Javascript
Vue父子组件传值的一些坑
Sep 16 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
asm.js使用示例代码
2013/11/28 Javascript
sails框架的学习指南
2014/12/22 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
Python判断操作系统类型代码分享
2014/11/22 Python
使用python为mysql实现restful接口
2018/01/05 Python
python设置值及NaN值处理方法
2018/07/03 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
电子信息毕业生自荐信
2013/11/16 职场文书
护士实习生自我鉴定范文
2013/12/10 职场文书
小学数学教学反思
2014/02/02 职场文书
会务接待方案
2014/02/27 职场文书
技术比武方案
2014/05/19 职场文书
工程催款通知书
2015/04/17 职场文书
员工表扬信怎么写
2015/05/05 职场文书
闪闪的红星观后感
2015/06/08 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
MySql开发之自动同步表结构
2021/05/28 MySQL
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题