实现一个前端小画布

简介: # canvas的介绍在HTML5中` canvas `元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.`<canvas>` 标签只是图形容器,您必须使用脚本来绘制图形。可以通过多种方法使用 canvas 绘制路径,盒、圆、字符以及添加图像。# 鼠标事件我们可以分别控制三个鼠标事件来控制绘画的状态## mouseup这是绑定的鼠标抬起的事件,鼠标抬起后会触发## mousedown这是绑定的鼠标摁下的事件,鼠标摁下后会触发## mousemove这是绑定的鼠标移动的事件,鼠标移动时会触发## 一个小实验```<!DOC

canvas的介绍

在HTML5中 canvas 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.

<canvas> 标签只是图形容器,您必须使用脚本来绘制图形。

可以通过多种方法使用 canvas 绘制路径,盒、圆、字符以及添加图像。

鼠标事件

我们可以分别控制三个鼠标事件来控制绘画的状态

mouseup

这是绑定的鼠标抬起的事件,鼠标抬起后会触发

mousedown

这是绑定的鼠标摁下的事件,鼠标摁下后会触发

mousemove

这是绑定的鼠标移动的事件,鼠标移动时会触发

一个小实验

<!DOCTYPE html>
<html>
    <head>
        <title>
            鼠标事件测试
        </title>
        <style>
            #mouse {
                width: 600px;
                height: 600px;
                background-color: antiquewhite;
            }
        </style>
    </head>
    <body>
        <div id="mouse"></div>
    </body>
    <script>
        let mouse = document.getElementById('mouse');
        // mouse.addEventListener('mousedown',()=>{
        //     alert("鼠标按下")
        // })
        // mouse.addEventListener("mousemove",()=>{
        //     alert("鼠标滑过");
        // })
        mouse.addEventListener("mouseup",()=>{
            alert("鼠标抬起");
        })
    </script>
</html>

测试某一个方法的时候就可以把其他的绑定的鼠标事件注释掉,然后去进行测试。

开始写我们的画布

<!DOCTYPE html>
<html>
    <head>
        <title>
            用cavons实现一个画画的板子
        </title>
        <style>
            html,body {
                width: 100%;
                width: 100%;
            }
            #canvas {
                width: 100%;
                height: 100%;
            }
        </style>
    </head>
    <body>
        <!-- 画布 -->
    <canvas id="canvas"></canvas>
    <script>
        // 获取canvas标签
        const canvas = document.getElementById('canvas');
        //渲染
        const ctx = canvas.getContext('2d');
        //变量开关
        let flag = false;
        //为canvas绑定一个鼠标按下事件
        canvas.addEventListener('mousedown', e => {
            flag = true;
            ctx.moveTo(e.pageX, e.pageY);
        });
        //canvas绑定一个鼠标移动事件
        canvas.addEventListener('mousemove', e => {
            if(flag) {
                ctx.lineTo(e.pageX, e.pageY);
                ctx.stroke();
            }
        });
        //canvas绑定一个鼠标抬起事件
        canvas.addEventListener('mouseup', e => {
            flag = false;
        });
    </script>
    </body>
</html>

以上就完成了我们的画布了

接下来我们运行一下

image.png

虽然很丑,但是效果大概是这个样子

我们来解析一下这段代码,核心思路是首先获取画布对象,然后创建context渲染的实例,接下来我们通过flag的状态来判断一下

我们还可以通过stroke()方法来进行连接点之间,最终实现画布的效果。

(stroke() 方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色)

相关文章
|
前端开发 JavaScript 容器
前端|利用<canvas>画布制作地球轨道
前端|利用<canvas>画布制作地球轨道
214 0
|
移动开发 前端开发 JavaScript
Web前端开发笔记——第二章 HTML语言 第十节 画布标签、音视频标签
Web前端开发笔记——第二章 HTML语言 第十节 画布标签、音视频标签
Web前端开发笔记——第二章 HTML语言 第十节 画布标签、音视频标签
|
7天前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
9 0
|
2月前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
55 2
|
2月前
|
前端开发 JavaScript 数据库
如何实现前后端分离-----前端笔记
如何实现前后端分离-----前端笔记
|
2月前
|
前端开发 安全 NoSQL
技术笔记:Security前端页面配置
技术笔记:Security前端页面配置
|
3月前
|
存储 前端开发 JavaScript
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
前端笔记_OAuth规则机制下实现个人站点接入qq三方登录
68 1
|
3月前
|
移动开发 前端开发 JavaScript
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战
10款精美的web前端源码的特效,2024年最新面试题+笔记+项目实战