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 相关文章推荐
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
ajax中get和post的说明及使用与区别
Dec 23 Javascript
js实现楼层效果的简单实例
Jul 15 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
Aug 18 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
Angular4学习笔记之根模块与Ng模块
Sep 09 Javascript
vue-cli 构建骨架屏的方法示例
Nov 08 Javascript
微信小程序身份证验证方法实现详解
Jun 28 Javascript
layui的layedit富文本赋值方法
Sep 18 Javascript
vue cli3 配置proxy代理无效的解决
Oct 30 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
原生JS实现留言板
Mar 26 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
PHP简单遍历对象示例
2016/09/28 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
python 反向输出字符串的方法
2018/07/16 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
python实现人机五子棋
2020/03/25 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
anello泰国官方网站:日本流行包包品牌
2019/08/08 全球购物
材料成型及控制工程专业求职信
2014/06/19 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
捐助感谢信
2015/01/22 职场文书