前端基础:canvas概述

2018/04/07 21:29
阅读数 6

1:并不是所有的浏览器都支持canvas,若是不支持则浏览器会弹出

<canvas>Update your browser to enjoy canvas</canvas>

浏览器不支持,也不能使用可替换的文字。

2:绘制一个时钟代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <canvas id = "clock" width = "500" height ="500" style = "background:gray">
        你的浏览器太老了不支持canvs标签,看不到时钟!
        </canvas>
</body>
<script>
    var clock = document.getElementById("clock");
    var cxt = clock.getContext('2d');
    var clock = document.getElementById('clock');
    var cxt = clock.getContext('2d');
        function drawClock() {    
            //清屏,可以看到针在移动
            cxt.clearRect(0,0,500,500);
            
            //得到系统当前的时间
            var now = new Date();
            //得到时分秒 
            var sec = now.getSeconds();
            var min = now.getMinutes();
            var hour = now.getHours();
            //小时是浮点数 类型要得到时针准确的位置,必须将当前的分钟也转换为//小时
            hour = hour+min/60;
            //将24小时转化为12小时制
            hour =(hour>12)?(hour-12):hour;
            
            
            //绘制表盘
            cxt.lineWidth=10;
            cxt.strokeStyle = "blue";
            cxt.beginPath();
            cxt.arc(250,250,200,0,360,false);
            cxt.stroke();
            cxt.closePath();
            //绘制刻度
                //时刻度
                for(var i = 0; i < 12; i++) {
                    cxt.save();
                    //设置时针的粗细
                    cxt.lineWidth = 7;
                    //设置时针的颜色
                    cxt.strokeStyle="#000";
                    //设置异次元空间的0,0点
                    cxt.translate(250,250);
                    //再设置旋转角度
                    cxt.rotate(i*30*Math.PI/180);
                    //开始绘制
                    cxt.beginPath();
                    cxt.moveTo(0,-170);
                    cxt.lineTo(0,-190);
                    cxt.stroke();
                    cxt.closePath();
                    cxt.restore();
                
                }
                //分刻度
                for(var i = 0; i < 60; i++) {
                    cxt.save();
                    //设置分刻度的粗细
                    cxt.lineWidth = 5;
                    //设置分刻度的颜色
                    cxt.strokeStyle = "#123";
                    //设置或者重置画布的0,0点
                    cxt.translate(250,250);
                    //设置旋转的角度
                    cxt.rotate(i*6*Math.PI/180);
                    //开始绘制
                    cxt.beginPath();
                    cxt.moveTo(0,-180);
                    cxt.lineTo(0,-190);
                    cxt.stroke();
                    cxt.closePath();
                    cxt.restore();
                }
            //时针
                cxt.save();
                //设置时针风格
                cxt.lineWidth = 7;
                //设置时针的颜色
                cxt.strokeStyle = "#000" ;
                //设置异次元空间的0,0点
                cxt.translate(250,250);
                //设置旋转的角度
                cxt.rotate(hour*30*Math.PI/180);
                //开始绘制
                cxt.beginPath();
                cxt.moveTo(0,-140);
                cxt.lineTo(0,10);
                cxt.stroke();
                cxt.closePath();
                cxt.restore();
            //分针
                cxt.save();
                //设置分针的风格
                cxt.lineWidth = 5;
                cxt.strokeStyle = "#000";
                //设置异次元空间分针画布的圆心
                cxt.translate(250,250);
                //设置旋转角度
                cxt.rotate(min*6*Math.PI/180);
                //开始绘制
                cxt.beginPath();
                cxt.moveTo(0,-160);
                cxt.lineTo(0,15);
                cxt.stroke();
                cxt.closePath();
                cxt.restore();
            
            //秒针
                cxt.save();
                //设置秒针的风格
                cxt.lineWidth = 3;
                cxt.strokeStyle = '#000';
                //设置异次元分针画布的圆心
                cxt.translate(250,250);
                //设置旋转角度
                cxt.rotate(sec*6*Math.PI/180);
                //绘制秒针
                cxt.beginPath();
                cxt.moveTo(0,-170);
                cxt.lineTo(0,20);
                cxt.stroke();
                cxt.closePath();
                //画出时针,分针,秒针的交叉点
                cxt.beginPath();
                cxt.arc(0,0,5,0,360,false);
                //设置填充样式
                cxt.fillStyle = "gray";
                cxt.fill();
                //设置笔触样式(秒针已设置)
                cxt.stroke();
                cxt.closePath();
                
                //设置秒针前段的小圆点
                cxt.beginPath();
                cxt.arc(0,-150,5,0,360,false);
                //设置填充样式
                cxt.fillStyle="gray";
                cxt.fill();
                //设置笔触样式(秒针已设置)
                cxt.stroke();
                cxt.closePath();
                
                cxt.restore();
            
        }
        //使用setInterval(方法名,每隔多少毫秒重绘一下)每隔一段时间重新绘制,看到动的效果
        drawClock();  //刷新不出现延迟
        setInterval(drawClock,1000);
</script>
</html>

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部