原生JS的<canvas>标签画时钟

  首先要申明本人对于美除了美女真没什么要求。

  其次讲讲次学习碰到重要知识点:

  1、画圆(弧):

    context.arc(x, y, radius, Math.PI / 180 * startAngle, Math.PI / 180 * endAngle, anticlockwise);

    x:横坐标;
    y:纵坐标;

    radius:半径;

    startAngle:Math.PI / 180 这个在数学上表示1度,这边需要用圆弧表示,所以需要多少就写多少。表示弧线开始的角度。

    endAngle:同理,表示弧线结束的角度。

    anticlockwise:是否逆时针,true:逆时针,false:顺时针。

  2、context.moveTo(x, y):将起画坐标移动到某个坐标上。如果不指定则从当前位置开始画。

  3、context.translate(x, y):将(x, y)这个坐标设置成(0,0);

  4、context.save():用于保存context的设置和变换,可以保存多个通过restore方法返回。可多次调用。

  5、context.restore():用户获取保存的context设置和变换,可多次调用。

直接上代码了:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta http-equiv="Refresh" content="1" />
    <title>canvas draw clcok</title>
    <script>
        window.onload = function(){
            var drawing = document.getElementById("drawing");
            if(drawing.getContext){
                var context = drawing.getContext("2d");
                console.log(context);
                //边框颜色
                context.fillStyle = "#999";
                //填充色 字体颜色
                context.strokeStyle = "#999";

                //画圆心黑点
                context.beginPath();
                context.arc(100, 100, 5, 0, 2*Math.PI, false);
                context.fill();
                context.closePath();

                context.beginPath();
                context.arc(100, 100, 99, 0, 2*Math.PI, false);
                context.moveTo(194, 100);
                context.arc(100, 100, 94, 0, 2*Math.PI, false);

                context.font=‘bold 16px sans-serif‘;
                context.textAlign=‘center‘;
                context.textBaseline=‘middle‘;

                context.fillText("1", 145, 30);
                context.fillText("2", 170, 60);
                context.fillText("3", 185, 100);
                context.fillText("4", 170, 140);
                context.fillText("5", 145, 170);
                context.fillText("6", 100, 185);
                context.fillText("7", 55, 170);
                context.fillText("8", 30, 140);
                context.fillText("9", 15, 100);
                context.fillText("10", 30, 60);
                context.fillText("11", 55, 30);
                context.fillText("12", 100, 15);
                context.closePath();

                var nowDate = new Date();
                var hours = nowDate.getHours();
                if(hours > 12){
                    hours = hours - 12;
                }
                var mins = nowDate.getMinutes();
                var seconds = nowDate.getSeconds();

                console.log("hours : " + hours + ",mins : " + mins + ",seconds : " + seconds)

                context.translate(100, 100);
                context.moveTo(0, 0);
                context.save(); //用于保存context的设置和变换,可以保存多个通过restore方法返回。

                // 时针
                context.restore();
                context.save();
                context.rotate(Math.PI / 180 * 6 * hours );
                context.lineTo(0, -50);
                // 分针、
                context.restore();
                context.save();
                context.moveTo(0, 0);
                context.rotate(Math.PI / 180 * 6 * mins);
                context.lineTo(0, -60);

                // 秒针、
                context.restore();
                context.moveTo(0, 0);
                context.rotate(Math.PI / 180 * 6 * seconds);
                context.lineTo(0, -70);
                context.stroke();
            }
        }
    </script>
</head>
<body>
    <h2 style="text-align: center;color:#007ACC">clcok</h2>
    <div>
        <canvas id="drawing" width="500px" height="500px">

        </canvas>
    </div>

</body>
</html>

  

原文地址:https://www.cnblogs.com/lwxiao/p/10591524.html

时间: 2024-10-06 10:54:42

原生JS的<canvas>标签画时钟的相关文章

使用原生js创建自定义标签

使用原生js创建自定义标签 效果图 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA

原生js之canvas时钟组件

canvas一直是前端开发中不可或缺的一种用来绘制图形的标签元素,比如压缩上传的图片.比如刮刮卡.比如制作海报.图表插件等,很多人在面试的过程中也会被问到有没有接触过canvas图形绘制. 定义 canvas元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. canvas标签只是图形容器,您必须使用脚本来绘制图形. 浏览器支持 Internet Explorer 9.Firefox.Opera.Chrome 和 Safari 支持 那么本篇文章就通过一个时钟组件来熟悉使用一下关

canvas案例——画时钟

基本思路,先画一个200半径的圆 ctx.arc(250,250,200,0,2*Math.PI); 然后再画时分刻度,可以先利用translate变化坐标到圆的中心点,然后再通过rotate旋转 1 //画12个时刻度线 2 for(var i=0;i<12;i++){ 3 ctx.save(); 4 ctx.translate(250,250); 5 ctx.rotate(i*Math.PI/6); 6 ctx.moveTo(0,-180); 7 ctx.lineTo(0,-195); 8

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

Html5新特性 &lt;canvas&gt;画板画直线

 下面例子为用canvas标签画多条直线 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht

原生js canvas 碰撞游戏的开发笔记

-----------------------------------------------福利--------------------------------------------- -----------------------------------------------分割线--------------------------------------------- 今天 我们研究下碰撞游戏 什么是碰撞游戏? 当然是东西碰到在一起啦 用前端逻辑来说 就是2个物品互相碰撞产生的事件 问

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

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

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

原生js怎么为动态生成的标签添加各种事件

这几天用zepto.js写了不少事件,突然想到一个问题,那就是原生的js如何给动态生成的标签添加事件?因为这些标签都是后来通过ajax或者运行其他点击事件生成的,那么如果之前给他们写事件他们这个dom对象是找不到的,jq通过事件委托解决了这个问题,但是原生js这个问题该怎么解决呢?我在网上查了很多资料,好像只有一种办法,那就是在生成标签并把标签添加到html结构中后再添加对于这个新标签的各种事件,如果有更好的方法,欢迎提出来. <!DOCTYPE html> <html lang=&qu