使用 Canvas 实现签名

通过 canvas 提供得 api,结合鼠标的事件 mousedown,mouseover,mouseup 来实现一个通过鼠标来签名的方法。

主要思路:在触发 mousedown 事件的时候,新增 mousemove 的监听事件,当触发 mouseup 事件的时候,再移除 mousemove 的监听事件。

<canvas id="box" width="400" height="400" style="background-color: black;"></canvas>
<script>
    function drawLine(context, x1, y1, x2, y2) {
        context.beginPath();
        context.strokeStyle = 'white';
        context.lineWidth = 1;
        context.moveTo(x1, y1);
        context.lineTo(x2, y2);
        context.stroke();
        context.closePath();
    }
    function signature(canvasId) {
        let x = 0;
        let y = 0;

        const board = document.getElementById(canvasId);
        const context = board.getContext('2d');
        const rect = board.getBoundingClientRect();

        board.addEventListener('mousedown', e => {
            x = e.clientX - rect.left;
            y = e.clientY - rect.top;
            isDrawing = true;
            board.addEventListener('mousemove', mouseMoveEvent)
        });

        board.addEventListener('mouseup', e => {
            x = 0;
            y = 0;
            board.removeEventListener('mousemove', mouseMoveEvent);
        });

        function mouseMoveEvent(e) {
            drawLine(context, x, y, e.clientX - rect.left, e.clientY - rect.top);
            x = e.clientX - rect.left;
            y = e.clientY - rect.top;
        }

    }

    signature('box')
</script>

图片演示如下


image.png

如果这篇文章对您有帮助,记得给作者点个赞,谢谢!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本篇博客源地址 总结: 鼠标事件 1.click与dbclick事件ele.click()ele.click(ha...
    ZombieBrandg阅读 3,945评论 0 1
  • 总结: 鼠标事件 1.click与dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r阅读 5,538评论 2 10
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 5,216评论 0 8
  • 本节介绍各种常见的浏览器事件。 鼠标事件 鼠标事件指与鼠标相关的事件,主要有以下一些。 click 事件,dblc...
    许先生__阅读 7,530评论 0 4
  • 第1章 鼠标事件 1-1 jQuery鼠标事件之click与dbclick事件 用交互操作中,最简单直接的操作就是...
    mo默22阅读 5,057评论 0 6

友情链接更多精彩内容