美文网首页
【Canvas 01】Canvas入门—酷炫倒计时

【Canvas 01】Canvas入门—酷炫倒计时

作者: 可爱多小姐 | 来源:发表于2019-03-21 21:32 被阅读0次

在慕课网上看到的前端关于canvas的一个倒计时小案例。
代码下载:Github
视频地址:慕课·canvas小球倒计时

倒计时

一、Canvas基础

1.1、Canvas画一个框

画一个canvas框
<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

    <body>
        <canvas id="canvas"  style="border: 1px solid salmon; display: block;margin: auto;"></canvas>
        <script>
            window.onload = function() {
                var canvas = document.getElementById("canvas");
                canvas.width=1024     //设置宽度
                canvas.height=700      //设置高度
                var context = canvas.getContext("2d");
            }
        </script>
    </body>
</html>

为canvas设置id="canvas",因为js需要引入。

1.2、Canvas画一个直线/三角形

画一个直线/三角形
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

    <body>
        <canvas id="canvas"  style="border: 1px solid salmon; display: block;margin: auto;"></canvas>
        <script>
            window.onload = function() {
                var canvas = document.getElementById("canvas");
                canvas.width=1024 //设置宽度
                canvas.height=700  //设置高度
                var context = canvas.getContext("2d");
                
                context.moveTo(100,100)   //设置起始坐标,向右为正,向下为正
                context.lineTo(700,600)//设置坐标
                context.lineTo(100,600)//设置坐标
                context.lineTo(100,100)//设置结束坐标,与起始坐标一样,图形是一个封闭的
                context.lineWidth=3//设置线条宽度
                context.strokeStyle="red"//设置线条颜色
                context.stroke()
            }
        </script>
    </body>
</html>

1.3、Canvas画多个三角形

image.png
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>

    <body>
        <canvas id="canvas"  style="border: 1px solid salmon; display: block;margin: auto;"></canvas>
        <script>
            window.onload = function() {
                var canvas = document.getElementById("canvas");
                canvas.width=1024 //设置宽度
                canvas.height=700  //设置高度
                var context = canvas.getContext("2d");
                
                context.beginPath()//开始
                context.moveTo(100,100)   //设置起始坐标,向右为正,向下为正
                context.lineTo(700,600)//设置坐标
                context.lineTo(100,600)//设置坐标
                context.lineTo(100,100)//设置结束坐标,与起始坐标一样,图形是一个封闭的
                context.lineWidth=3//设置线条宽度
                context.strokeStyle="red"//设置线条颜色
                context.closePath()//结束
                context.stroke()
                
                context.beginPath()//开始
                context.moveTo(200,200)
                context.lineTo(300,600)
                context.lineTo(100,600)
                context.lineTo(200,200)
                context.lineWidth=3
                context.strokeStyle="blue"              
                context.closePath()//结束
                context.stroke()
            }
        </script>
    </body>
</html>

需要在每一个加上context.beginPath()//开始context.closePath()//结束,两者不需要成对出现,可以只出现context.beginPath()
如果有context.closePath(),图形如果代码没有封口,也会封闭起来。

1.4、Canvas画多个圆

定义和用法

arc()方法创建弧/曲线(用于创建圆或部分圆)。

提示:如需通过arc()来创建圆,请把起始角设置为 0,结束角设置为 2*Math.PI

提示:请使用stroke()fill()方法在画布上绘制实际的弧。

弧/曲线
  • 中心:arc(100,75,50,0*Math.PI,1.5*Math.PI)
  • 起始角:arc(100,75,50,0,1.5*Math.PI)
  • 结束角:arc(100,75,50,0*Math.PI,1.5*Math.PI)
JavaScript 语法:

context.arc(x,y,r,sAngle,eAngle,counterclockwise=false)

context.arc(中心横坐标,重心纵坐标,半径,起始角,结束角,顺时针)
规定False = 顺时针,true = 逆时针。不写默认顺时针

画一组圆
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <canvas id="canvas" style="border: 1px solid red;"></canvas>
        <script>
            var canvas = document.getElementById("canvas")
            canvas.width = 1000
            canvas.height = 1000
            var ctx = canvas.getContext("2d")
            ctx.lineWidth = 3
            ctx.strokeStyle = "chartreuse"
            
            //没有写ctx.closePath(),图形不封闭
            for (var i = 0; i < 9; i++) {
                ctx.beginPath()
                ctx.arc(100 + 80 * i, 100, 30, 0, 2 * Math.PI * (i + 1) / 9, true)
                ctx.stroke()
                
            }
                        
            //写ctx.closePath(),图形封闭
            for (var i = 0; i < 9; i++) {
                ctx.beginPath()
                ctx.arc(100 + 80 * i, 200, 30, 0, 2 * Math.PI * (i + 1) / 9, true)              
                ctx.closePath()
                ctx.stroke()
            }
            
            //写ctx.closePath(),给图形填充颜色
            ctx.fillStyle="coral"
            for (var i = 0; i < 9; i++) {
                ctx.beginPath()
                ctx.arc(100 + 80 * i, 300, 30, 0, 2 * Math.PI * (i + 1) / 9, true)              
                ctx.closePath()             
                ctx.fill()
            }
            
            //没有写ctx.closePath(),给图形填充颜色
            ctx.fillStyle="coral"
            for (var i = 0; i < 9; i++) {
                ctx.beginPath()
                ctx.arc(100 + 80 * i, 400, 30, 0, 2 * Math.PI * (i + 1) / 9, true)                          
                ctx.fill()
            }
        </script>
    </body>
</html>

不管没有写ctx.closePath(),图形是否封闭。给图形填充颜色的效果是一样的。

相关文章

  • 【Canvas 01】Canvas入门—酷炫倒计时

    在慕课网上看到的前端关于canvas的一个倒计时小案例。代码下载:Github视频地址:慕课·canvas小球倒计...

  • 【Canvas 03】 Canvas时钟效果

    在前一篇文章中,我已经写了canvas如何制作一个百行代码Canvas酷炫倒计时 下面由此衍生出canvas动画时...

  • HTML5新增API

    Canvas 画布 canvas用途 游戏 小游戏 图表 报表 如 Charts插件 炫酷效果 banner 模...

  • canvas简单入门(1)

    Canvas 画布 canvas用途 游戏 小游戏 图表 报表 如 Charts插件 炫酷效果 banner 模...

  • H5 新特性01

    Canvas 基础 canvas应用领域 游戏 可视化数据(图表) banner、炫酷效果 地图 ...

  • canvas的简单使用

    Canvas 画布 canvas用途 游戏 小游戏 图表 报表 如 Charts插件 炫酷效果 banner 模...

  • canvas基础

    Canvas 画布基础 canvas用途 游戏 小游戏 图表 报表 如 Charts插件 炫酷效果 banner...

  • canvas学习一

    最近发现canvas可以实现好多酷炫的效果,因为对canvas一知半解,平时好像用到的场景也不多,现在准备系统的学...

  • canvas环形倒计时组件

    效果如下图一: Canvas环形倒计时组件 Canvas环形倒计时是基于Canvas实现的倒计时,建议于移动端使用...

  • 十五、canvas绘制、线、矩形、圆、文字

    一、canvas介绍 canvas(画布)是HTML的新标签,它就相当于一张白纸,我们可以利用它绘制出很多酷炫的效...

网友评论

      本文标题:【Canvas 01】Canvas入门—酷炫倒计时

      本文链接:https://www.haomeiwen.com/subject/axrhvqtx.html