`
mywebcode
  • 浏览: 1072663 次
文章分类
社区版块
存档分类
最新评论

玩转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 动画时钟

    在这个"HTML5 Canvas 动画时钟"的主题中,我们将深入探讨如何利用Canvas API创建一个实时更新的、美观的数字或指针式时钟。 首先,Canvas API 提供了 `canvas` 元素,它是一个矩形区域,可以通过 JavaScript 来绘制...

    html5 canvas画布绘制圆形时钟代码

    在这个“html5 canvas画布绘制圆形时钟代码”示例中,我们将深入探讨如何利用Canvas API来创建一个功能完备的圆形时钟。 首先,你需要在HTML文件中创建一个`&lt;canvas&gt;`元素,它将作为我们的画布。例如: ```html &lt;!...

    html5:用canvas写一个时钟

    html5---用canvas写一个时钟

    HTML5 Canvas绘制时钟

    这篇博文“HTML5 Canvas绘制时钟”旨在介绍如何利用Canvas API创建一个实时更新的数字或指针式时钟。我们将深入探讨Canvas的基础知识、相关API以及实现时钟的具体步骤。 1. HTML5 Canvas基础 HTML5 Canvas是一个二...

    javascript - Canvas动画- 太空星球运动

    Canvas是HTML5引入的一个重要特性,它允许开发者通过JavaScript在网页上绘制2D图形,从而实现各种动态效果,如本主题所讲的“太空星球运动”。 在Canvas上创建动画,首先要理解Canvas的基本用法。Canvas是一个矩形...

    HTML5 使用canvas画布做小球回弹动画

    本教程将深入探讨如何使用HTML5的canvas画布来创建一个小球回弹的动画。 首先,我们需要在HTML文件中创建一个`&lt;canvas&gt;`元素,并为其指定ID,以便于JavaScript代码中引用: ```html &lt;!DOCTYPE html&gt; &lt;html lang=...

    Html5-canvas 时钟

    使用html5中的canvas标签+jquery绘制的时钟走动代码

    HTML5 Canvas红色灯笼时钟动画.zip

    在这个“HTML5 Canvas红色灯笼时钟动画”项目中,开发者利用Canvas API创建了一个具有红色灯笼主题的动态时钟,这个时钟能够根据用户的电脑时间实时更新显示。 首先,我们来了解一下Canvas的基本概念。HTML5中的`...

    使用canvas制作一个动态时钟

    使用canvas实现动态时钟效果

    HTML5 canvas时钟效果.zip

    在这个“HTML5 canvas时钟效果.zip”压缩包中,包含了一个使用Canvas API实现的时钟显示功能。这个时钟不仅绘制了表盘、时针、分针和秒针,还展示了数字时间,为网页增添了一种实用且动态的元素。 1. **Canvas基本...

    canvas动画 - 背景线条

    在网页设计中,Canvas元素是HTML5引入的一个强大的图形绘制工具,它允许开发者通过JavaScript来在浏览器中直接绘制图形,包括动态的动画效果。"canvas动画 - 背景线条"是一个利用Canvas实现的创新性设计,它可以为...

    HTML5 Canvas核心技术—图形、动画与游戏开发一书源代码

    HTML5 Canvas是Web开发中的一个关键技术,它提供了一个在网页上绘制图形的API,使得开发者可以直接在浏览器中创建丰富的交互式2D图形、动画以及游戏。"HTML5 Canvas核心技术—图形、动画与游戏开发"这本书深入浅出地...

    html5 canvas模仿flash的简单动画banner Demo

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上直接绘制图形,从而创建出丰富的交互式用户体验。这个“html5 canvas模仿flash的简单动画banner Demo”就是利用Canvas API来实现类似Flash的动态广告...

    HTML5 简单的动画 数字时钟

    Canvas是HTML5中的一个画布标签,它允许开发者通过JavaScript来绘制图形,包括线条、形状、图像等,甚至可以实现复杂的动画效果。在本项目中,Canvas被用来创建一个实时更新的数字时钟,这展示了Canvas的动态绘图...

    html5 canvas制作15种数字时钟样式代码

    HTML5 Canvas 是一个强大的网页图形绘制工具,它允许开发者通过JavaScript在浏览器中直接进行2D图形的绘制。在这个项目中,“html5 canvas制作15种数字时钟样式代码”是利用Canvas API创建了十五种不同设计风格的...

    HTML5:canvas制作时钟

    通过使用 HTML5 的 Canvas 元素,我们可以轻松地绘制一个时钟。 Canvas 元素提供了一个强大的绘图功能,可以用来绘制各种图形和动画。在这篇文章中,我们学习了如何使用 Canvas 元素来绘制一个时钟,包括绘制时钟的...

    ec-canvas动态加载

    例如,如果一个页面只使用柱状图和饼图,可以只加载这两种图表的模块,而不需要加载其他不使用的图表模块,节省流量和提高加载速度。 3. **模块化设计**:EC-Canvas采用模块化设计,每个图表或功能都是一个独立的...

    基于Html5-canvas炫酷的数字时钟.zip

    这个"基于Html5-canvas炫酷的数字时钟.zip"文件很可能包含了一个使用HTML5 Canvas实现的创新数字时钟示例。在这个项目中,开发者可能利用了Canvas的绘图功能来创建一个视觉上吸引人的时钟界面,它能够实时更新时间,...

    HTML5 Canvas核心技术 图形、动画与游戏开发.pdf

    HTML5 Canvas是Web开发中的一个强大工具,它允许开发者在网页上进行动态图形绘制,创建丰富的交互式用户体验。这本书——"HTML5 Canvas核心技术 图形、动画与游戏开发"深入探讨了Canvas API,揭示了如何利用这个技术...

    HTML5 Canvas生成很自然流畅的人体运动动画.rar

    HTML5 CSS3 Canvas技术生成很自然流畅的人体运动动画,模拟出了身体碰撞被挤压的动画特效,在实例中有一个大球,用户操作大球任意运动,碰撞到人体的任意部分后,人体会自然的受到挤压和躲避,可看到人的身体某部分...

Global site tag (gtag.js) - Google Analytics