初学HTML:在线简易画板设计。

最近在HTML,记录下一点点成果。 设计了一个简易画板,通过HTML的Canvas元素实现一个在线画板,用户可以在上面绘制图形或涂鸦。

下面是运行效果:

下面是代码:

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <title>绘图板</title>
    <style>
        #drawing-board {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <h1>绘图板</h1>
    <canvas id="drawing-board" width="800" height="600"></canvas>

    <script>
        document.addEventListener("DOMContentLoaded", function(event) {
            var drawingBoard = document.getElementById("drawing-board");
            var context = drawingBoard.getContext("2d");
            var isDrawing = false;
            var lastX = 0;
            var lastY = 0;

            drawingBoard.addEventListener("mousedown", startDrawing);
            drawingBoard.addEventListener("mousemove", draw);
            drawingBoard.addEventListener("mouseup", stopDrawing);
            drawingBoard.addEventListener("mouseout", stopDrawing);

            function startDrawing(event) {
                isDrawing = true;
                [lastX, lastY] = [event.offsetX, event.offsetY];
            }

            function draw(event) {
                if (!isDrawing) return;
                context.beginPath();
                context.moveTo(lastX, lastY);
                context.lineTo(event.offsetX, event.offsetY);
                context.stroke();
                [lastX, lastY] = [event.offsetX, event.offsetY];
            }

            function stopDrawing() {
                isDrawing = false;
            }
        });
    </script>
</body>
</html>

这段代码会在浏览器中创建一个标题为"绘图板"的页面。页面顶部有一个 <h1> 元素,用于显示标题。画板使用 <canvas> 元素创建,并在CSS中定义了边框样式。

在JavaScript部分,使用事件监听器来响应鼠标按下、移动和释放的事件。当鼠标按下时,开始绘制路径;当鼠标移动时,继续绘制路径;当鼠标释放或离开画板时,停止绘制路径。使用 offsetXoffsetY 属性获取鼠标相对于画板的位置,并使用 context.beginPath()context.lineTo() 方法来绘制路径。

通过以上代码,可以在浏览器中运行,看到一个简易的在线画板。可以点击并拖动鼠标来自由绘制线条。

相关推荐
掘金安东尼4 小时前
纯 CSS 实现弹性文字效果
前端·css
牛奶4 小时前
Vue 基础理论 & API 使用
前端·vue.js·面试
牛奶5 小时前
Vue 底层原理 & 新特性
前端·vue.js·面试
anOnion5 小时前
构建无障碍组件之Radio group pattern
前端·html·交互设计
pe7er5 小时前
状态提升:前端开发中的状态管理的设计思想
前端·vue.js·react.js
SoaringHeart6 小时前
Flutter调试组件:打印任意组件尺寸位置信息 NRenderBox
前端·flutter
晚风予星6 小时前
Ant Design Token Lens 迎来了全面升级!支持在 .tsx 或 .ts 文件中直接使用 Design Token
前端·react.js·visual studio code
sunny_7 小时前
⚡️ vite-plugin-oxc:从 Babel 到 Oxc,我为 Vite 写了一个高性能编译插件
前端·webpack·架构
GIS之路7 小时前
ArcPy 开发环境搭建
前端
林小帅8 小时前
【笔记】OpenClaw 架构浅析
前端·agent