玩转html5(四)----使用canvas画一个时钟(可以动的哦!)

先给个效果图,我画的比较丑,大家可以自己美化一下,

直接上代码:

<!DOCTYPE html>
<meta charset="utf-8">
<html>
   <body>
   	  <canvas  width="500" height="500" id="clock" >
   	         您的浏览器不支持canvas
   	  </canvas>
   	  <script>
           //获取画布
           var clock=document.getElementById(‘clock‘);
           //设置绘图环境
           var cxt=clock.getContext(‘2d‘);  

       function drawClock(){
       	   //清除画布
       	   cxt.clearRect(0,0,500,500);
           //获取时间,
            var now =new Date();
            var second =now.getSeconds();
            var minute =now.getMinutes();
            var hour1 =now.getHours();
            //将24小时进制转为12小时,且为浮点型
            var hour=hour1+minute/60;
            hour=hour>12 ?hour-12:hour;
            //获取全部时间
            var time=now.toLocaleString( );

           //表盘
                //开始新路径
                cxt.beginPath();
                cxt.lineWidth=8;
                cxt.strokeStyle="blue";
                //路径函数 x,y,r,角度范围,顺时针/逆时针
                cxt.arc(250,250,200,0,360,false);
                cxt.stroke();
                cxt.closePath();
            //刻度,利用旋转
               //时刻度
                for(var i=0;i<12;i++){
                	//保存当前状态
                    cxt.save();
                    //刻度粗细
                     cxt.lineWidth=5;
                    //刻度颜色
                    cxt.strokeStyle="black"
                    //设置00点,以画布中心为00
                    cxt.translate(250,250);
                    //设置旋转角度 参数是弧度,角度 0--360 弧度角度*Math.PI/180
                    cxt.rotate(i*30*Math.PI/180);
                    cxt.beginPath();
                    //刻度起始点
                    cxt.moveTo(0,-180);
                    //刻度结束点
                    cxt.lineTo(0,-195);
                    cxt.closePath();
                    cxt.stroke();
                    //将旋转后的图片返回原画布
                    cxt.restore();
                }

               //分刻度
                 for(var i=0;i<60;i++){
                	//保存当前状态
                    cxt.save();
                    //刻度粗细
                    cxt.lineWidth=3;
                    //刻度颜色
                    cxt.strokeStyle="black"
                    //设置00点,以画布中心为00
                    cxt.translate(250,250);
                    //设置旋转角度 参数是弧度,角度 0--360 弧度角度*Math.PI/180
                    cxt.rotate(i*6*Math.PI/180);
                    cxt.beginPath();
                    //起始点
                    cxt.moveTo(0,-188);
                    cxt.lineTo(0,-195);
                    cxt.closePath();
                    cxt.stroke();
                    //将旋转后的图片返回原画布
                    cxt.restore();
                }
            //表盘中心
                cxt.beginPath();
                cxt.lineWidth=1;
                cxt.strokeStyle="red";
                cxt.fillStyle="red";
                //路径函数 x,y,r,角度范围,顺时针/逆时针
                cxt.arc(250,250,4,0,360,false);
                cxt.fill();
                cxt.stroke();
                cxt.closePath();
            //时针
                //保存当前状态
                 cxt.save();
                 cxt.lineWidth=5;
                 cxt.strokeStyle="black";
                 //设置异次元空间00点
                 cxt.translate(250,250);
                 //设置旋转角度 参数是弧度,角度 0--360 弧度角度*Math.PI/180
                 cxt.rotate(hour*30*Math.PI/180);
                 cxt.beginPath();
                 cxt.moveTo(0,-120);
                 cxt.lineTo(0,10);
                 cxt.closePath();
                 cxt.stroke();
                 cxt.restore();
            //分针
                 cxt.save();
                 cxt.lineWidth="3";
                 cxt.strokeStyle="black";
                 cxt.translate(250,250);
                 cxt.rotate(minute*6*Math.PI/180);
                 cxt.beginPath();
                 cxt.moveTo(0,-150);
                 cxt.lineTo(0,15);
                 cxt.closePath();
                 cxt.stroke();
                 cxt.restore();
            //秒针
                 cxt.save();
                 cxt.lineWidth="1.5";
                 cxt.strokeStyle="red";
                 cxt.translate(250,250);
                 cxt.rotate(second*6*Math.PI/180);
                 cxt.beginPath();
                 cxt.moveTo(0,-160);
                 cxt.lineTo(0,20);
                 cxt.closePath();
                 cxt.stroke();
                 //秒针前端小点
                 cxt.beginPath();
                 //外环为红色
                 cxt.strokeStyle="red";
                 //灰色填充
                 cxt.fillStyle="gray";
                 cxt.arc(0,-145,4,0,360,false);
                   cxt.fill();
                 cxt.closePath();
                 cxt.stroke();
                 cxt.restore();
            //表盘中心
                cxt.beginPath();
                cxt.lineWidth=1;
                //外环为红色
                cxt.strokeStyle="red";
                //灰色填充
                cxt.fillStyle="gray";
                //路径函数 x,y,r,角度范围,顺时针/逆时针
                cxt.arc(250,250,4,0,360,false);
                cxt.fill();
                cxt.stroke();
                cxt.closePath();
            //写时间
                cxt.font="15px 黑体 ";
                 cxt.fillStyle="black";
                //实心字
                cxt.fillText(time,160,150);
           }
           //使用setInterval(代码,毫秒时间)使时钟转起来;
           drawClock();
           setInterval(drawClock,1000);

   	  </script>
   </body>
</html>

玩转html5(四)----使用canvas画一个时钟(可以动的哦!),码迷,mamicode.com

时间: 2024-10-12 19:56:40

玩转html5(四)----使用canvas画一个时钟(可以动的哦!)的相关文章

html5学习(一)--canvas画时钟

利用空余时间学习一下html5. 1 <!doctype html> 2 <html> 3 <head></head> 4 <body> 5 <canvas id="clock" width="500" height="500"></canvas> 6 <script> 7 var clock=document.getElementById('cloc

10分钟,利用canvas画一个小的loading界面(顺便讨论下绘制效率问题)

首先利用定义下canvas得样式 <canvas width="1024" height="720" id="canvas" style="border: 1px solid #808080;display: block;margin: 100px auto;>你的游览器不支持canvas</canvas> 这里主要要说的就是宽高,不要在style里面定义,不然会被拉伸.(对于这点,建议大家看下W3c文档,不是很

10分钟,利用canvas画一个小的loading界面

首先利用定义下canvas得样式 <canvas width="1024" height="720" id="canvas" style="border: 1px solid #808080;display: block;margin: 100px auto;>你的游览器不支持canvas</canvas> 这里主要要说的就是宽高,不要在style里面定义,不然会被拉伸.(对于这点,建议大家看下W3c文档,不是很

用html5中的canvas写的时钟

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&

玩转 html5 (二) ---- 用 canvas 结合脚本在画布上画简单的图 (html5 又一强大功能)

在html5中可以使用canvas标签在画布上画图,先直接上代码,这篇文章先简单介绍一下canvas的使用方法,简单画几个圆,矩形,三角形,写字. 在代码中均给出了注释,在这里特别强调的一点是:使用canvas画图时有时候必须beginPath和colsePath,但有时不需要,为了防止出现问题,可以在每次重新画一个图时重新开启路径,画完后关闭路径. 这些代码是在猎豹浏览器上实现的,有些浏览器可能不支持. [html] view plaincopy <!DOCTYPE html> <me

canvas 画一个小时钟

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <canvas id="mycanvas" height="1000" width="1000"></ca

利用canvas画一个动态时钟

目标:利用canvas画布画一个动态时钟,根据目前的时间可以实时更新的,可以在过程中添加一些效果,比如让时钟外围的一圈颜色渐变,时钟上的数字颜色改变,时钟的指针颜色改变... 设置一个定时器 先放上一张效果图,参考一下 先建一个画布,写好样式 <style type="text/css"> *{ margin: 0; padding: 0; } div{ //设置div的text-align为center,margin-top text-align: center; mar

手对手的教你用canvas画一个简单的海报

啦啦啦,首先说下需求,产品想让用户在我们app内,分享一张图片到微信.qq等平台.图片中包含用户的姓名.头像.和带着自己信息的二维码.然后,如何生成这张海报呢~~~首先我们老大告诉我有一个插件叫html2canvas.其作用就是可以将dom节点转化成图片,是个不错的东西.我试验了下.确实可以,但~这个插件有点大啊,为了满足海报的这个需求引入这么大的东西感觉很亏!!!所以,还是自己画一个~首先先上效果图 当当当当~~~最后生成的海报中包括头像和姓名与二维码,当然图上的二维码是百度的二维码~最后生成

通过H5的新标签canvas做出一个时钟的全过程,希望对初学者有帮助

最近学习了H5中的一个新标签canvas并且用它做出了一个时钟,最下面是成品图像,还不错吧,这只是我学习中的一个小demo,做得有点粗糙,但终究是做出来了,以后再写自己的网页主页再做一个好看点放上去.接下来我将和你们分享如何制作这个时钟. 在body中添加canvas标签: <canvas id="myCanvas" width="600px" height="600px" style="border:1px solid #c3c