HTML5时钟用来教小朋友认识时钟

[复制链接]
查看: 768   回复: 12
发表于 2022-12-4 21:16:47 | 显示全部楼层 |阅读模式
专门用来教小朋友认识时钟
[HTML]  
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta charset="utf-8" />
  5.     <title>HTML5time</title>
  6.         <!--本地jQuery-->
  7.     <script src="./jquery.min.js"></script>
  8.     <style>
  9.         .clocks {
  10.             height: 900px;
  11.             margin: 25px auto;
  12.             position: relative;
  13.             width: 900px;
  14.         }
  15.     </style>
  16. </head>
  17. <body>
  18. <header>
  19. </header>
  20. <div class="clocks">
  21.     <canvas id="canvas" width="800" height="800"></canvas>
  22. </div>
  23. </body>
  24. <script>
  25.     //初始化参数
  26.     var canvas, ctx;
  27.     var clockRadius = 250;
  28.     var clockImage;
  29.         //清空画布
  30.     function clear() {
  31.         ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
  32.     }
  33.         //画图
  34.     function drawScene(hours = 0,minutes = 0,seconds = 0) {
  35.                 clockImage = new Image();
  36.         clockImage.src = "./time.png";//本地图片
  37.                 clockImage.onload = function(){ctx.drawImage(clockImage, 50, 50, 700, 700)};
  38.         clear();
  39.         //获取时间
  40.         var date = new Date();
  41.         var hours = hours>0?hours:date.getHours();
  42.         var minutes = minutes>0?minutes:date.getMinutes();
  43.         var seconds = seconds>0?seconds:date.getSeconds();
  44.         hours = hours > 12 ? hours - 12 : hours;
  45.         var hour = hours + minutes / 60;
  46.         var minute = minutes ;
  47.         ctx.save();
  48.         ctx.translate(canvas.width / 2, canvas.height / 2);
  49.         ctx.beginPath();
  50.         ctx.font = '36px Arial';
  51.         ctx.fillStyle = '#000';
  52.         ctx.textAlign = 'center';
  53.         ctx.textBaseline = 'middle';
  54.                 //标注小时
  55.         for (var n = 1; n <= 12; n++) {
  56.             var theta = (n - 3) * (Math.PI * 2) / 12;
  57.             var x = clockRadius * 1 * Math.cos(theta);
  58.             var y = clockRadius * 1 * Math.sin(theta);
  59.             ctx.fillText(n, x, y);
  60.         }
  61.                 //标注分钟
  62.         for (var n = 1; n <= 60; n++) {
  63.             var theta = (n-15) * (Math.PI * 2) / 60;
  64.             var x = clockRadius * 1.4 * Math.cos(theta);
  65.             var y = clockRadius * 1.4 * Math.sin(theta);
  66.             ctx.fillStyle = 'red';
  67.             ctx.font = "20px sans-serif"
  68.             ctx.fillText(n, x, y);
  69.         }
  70.         //画时钟
  71.         ctx.save();
  72.         var theta = (hour - 3) * 2 * Math.PI / 12;
  73.         ctx.rotate(theta);
  74.         ctx.beginPath();
  75.         ctx.moveTo(-15, -5);
  76.         ctx.lineTo(-15, 5);
  77.         ctx.lineTo(clockRadius * 0.7, 1);
  78.         ctx.lineTo(clockRadius * 0.7, -1);
  79.         ctx.fillStyle = 'blue';
  80.         ctx.fill();
  81.         ctx.restore();
  82.         //画分钟
  83.         ctx.save();
  84.         var theta = (minute - 15) * 2 * Math.PI / 60;
  85.         ctx.rotate(theta);
  86.         ctx.beginPath();
  87.         ctx.moveTo(-15, -4);
  88.         ctx.lineTo(-15, 4);
  89.         ctx.lineTo(clockRadius * 1, 1);
  90.         ctx.lineTo(clockRadius * 1, -1);
  91.         ctx.fillStyle = 'red';
  92.         ctx.fill();
  93.         ctx.restore();
  94.         //画秒钟
  95.         ctx.save();
  96.         var theta = (seconds - 15) * 2 * Math.PI / 60;
  97.         ctx.rotate(theta);
  98.         ctx.beginPath();
  99.         ctx.moveTo(-15, -3);
  100.         ctx.lineTo(-15, 3);
  101.         ctx.lineTo(clockRadius * 1.2, 1);
  102.         ctx.lineTo(clockRadius * 1.2, -1);
  103.         ctx.fillStyle = '#D5D52B';
  104.         ctx.fill();
  105.         ctx.restore();
  106.         ctx.restore();
  107.     }
  108.     $(function(){
  109.         canvas = document.getElementById('canvas');
  110.         ctx = canvas.getContext('2d');
  111.         //setInterval(drawScene, 1000);//当前时间
  112.         drawScene(12,1,30);//手动调整时间
  113.     });
  114. </script>
  115. </html>
复制代码
钟表背景图片

效果图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

 楼主| 发表于 2022-12-4 21:17:35 | 显示全部楼层

https://img12.360buyimg.com/ddimg/jfs/t1/6650/26/26983/43130/637d6e84E2b619ce6/5fb355870546c27e.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2022-12-4 21:18:29 | 显示全部楼层
[HTML]  
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta charset="utf-8" />
  5.     <title>HTML5time</title>
  6.         <!--本地jQuery-->
  7. <script src="https://code.jquery.com/jquery-3.6.1.min.js"></script>
  8.     <style>
  9.         .clocks {
  10.             height: 900px;
  11.             margin: 25px auto;
  12.             position: relative;
  13.             width: 900px;
  14.         }
  15.         #canvas{
  16.                 background:url();
  17.     background-size:800px 800px;
  18.     background-repeat:no-repeat;
  19.         }
  20.     </style>
  21. </head>
  22. <body>
  23. <header>
  24. </header>
  25. <div class="clocks">
  26.     <canvas id="canvas" width="800" height="800"></canvas>
  27. </div>
  28. </body>
  29. <script>
  30.     //初始化参数
  31.     var canvas, ctx;
  32.     var clockRadius = 250;
  33.     var clockImage;
  34.         //清空画布
  35.     function clear() {
  36.         ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
  37.     }
  38.          
  39.         //画图
  40.     function drawScene(hours = 0,minutes = 0,seconds = 0) {
  41.                 clockImage = new Image();
  42.         clockImage.src = "";//本地图片
  43.                 clockImage.onload = function(){ctx.drawImage(clockImage, 50, 50, 700, 700)};
  44.         clear();
  45.         //获取时间
  46.         var date = new Date();
  47.         var hours = hours>0?hours:date.getHours();
  48.         var minutes = minutes>0?minutes:date.getMinutes();
  49.         var seconds = seconds>0?seconds:date.getSeconds();
  50.         hours = hours > 12 ? hours - 12 : hours;
  51.         var hour = hours + minutes / 60;
  52.         var minute = minutes ;
  53.         ctx.save();
  54.         ctx.translate(canvas.width / 2, canvas.height / 2);
  55.         ctx.beginPath();
  56.         ctx.font = '36px Arial';
  57.         ctx.fillStyle = '#000';
  58.         ctx.textAlign = 'center';
  59.         ctx.textBaseline = 'middle';
  60.                 //标注小时
  61.         for (var n = 1; n <= 12; n++) {
  62.             var theta = (n - 3) * (Math.PI * 2) / 12;
  63.             var x = clockRadius * 1 * Math.cos(theta);
  64.             var y = clockRadius * 1 * Math.sin(theta);
  65.             ctx.fillText(n, x, y);
  66.         }
  67.                  
  68.                 //标注分钟
  69.         for (var n = 1; n <= 60; n++) {
  70.             var theta = (n-15) * (Math.PI * 2) / 60;
  71.             var x = clockRadius * 1.4 * Math.cos(theta);
  72.             var y = clockRadius * 1.4 * Math.sin(theta);
  73.             ctx.fillStyle = 'red';
  74.             ctx.font = "20px sans-serif"
  75.             ctx.fillText(n, x, y);
  76.         }
  77.         //画时钟
  78.         ctx.save();
  79.         var theta = (hour - 3) * 2 * Math.PI / 12;
  80.         ctx.rotate(theta);
  81.         ctx.beginPath();
  82.         ctx.moveTo(-15, -5);
  83.         ctx.lineTo(-15, 5);
  84.         ctx.lineTo(clockRadius * 0.7, 1);
  85.         ctx.lineTo(clockRadius * 0.7, -1);
  86.         ctx.fillStyle = 'blue';
  87.         ctx.fill();
  88.         ctx.restore();
  89.         //画分钟
  90.         ctx.save();
  91.         var theta = (minute - 15) * 2 * Math.PI / 60;
  92.         ctx.rotate(theta);
  93.         ctx.beginPath();
  94.         ctx.moveTo(-15, -4);
  95.         ctx.lineTo(-15, 4);
  96.         ctx.lineTo(clockRadius * 1, 1);
  97.         ctx.lineTo(clockRadius * 1, -1);
  98.         ctx.fillStyle = 'red';
  99.         ctx.fill();
  100.         ctx.restore();
  101.         //画秒钟
  102.         ctx.save();
  103.         var theta = (seconds - 15) * 2 * Math.PI / 60;
  104.         ctx.rotate(theta);
  105.         ctx.beginPath();
  106.         ctx.moveTo(-15, -3);
  107.         ctx.lineTo(-15, 3);
  108.         ctx.lineTo(clockRadius * 1.2, 1);
  109.         ctx.lineTo(clockRadius * 1.2, -1);
  110.         ctx.fillStyle = '#D5D52B';
  111.         ctx.fill();
  112.         ctx.restore();
  113.         ctx.restore();
  114.     }
  115.     $(function(){
  116.         canvas = document.getElementById('canvas');
  117.         ctx = canvas.getContext('2d');
  118.        setInterval(drawScene, 1000);//当前时间
  119.        // drawScene(12,1,30);//手动调整时间
  120.     });
  121. </script>
  122. </html>
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:18:40 | 显示全部楼层
我把他搞下来了,给你补上链接,谢谢分享


https://wkdxz.lanzout.com/iLaaM0gl170b
密码:7i21
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:19:04 | 显示全部楼层
dd,支持一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:19:37 | 显示全部楼层
没有jquery.min.js脚本?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:20:08 | 显示全部楼层
那个无法上传,网上随便搞一个就行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:21:04 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:21:50 | 显示全部楼层
写得不错。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:22:06 | 显示全部楼层
$(function)可以用window.onload
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:22:43 | 显示全部楼层
为啥我的不会动,js要放入同目录了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-4 21:23:25 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-12-4 21:24:03 | 显示全部楼层
你确定你一下,jQuery的路径问题,直接在网页上面F12是否能打开jQuery文件
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则