使用 Canvas 實現(xiàn)簽名

通過 canvas 提供得 api,結(jié)合鼠標的事件 mousedown,mouseover,mouseup 來實現(xiàn)一個通過鼠標來簽名的方法。

主要思路:在觸發(fā) mousedown 事件的時候,新增 mousemove 的監(jiān)聽事件,當觸發(fā) mouseup 事件的時候,再移除 mousemove 的監(jiān)聽事件。

<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

如果這篇文章對您有幫助,記得給作者點個贊,謝謝!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 本篇博客源地址 總結(jié): 鼠標事件 1.click與dbclick事件ele.click()ele.click(ha...
    ZombieBrandg閱讀 753評論 0 1
  • 總結(jié): 鼠標事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,721評論 2 10
  • (續(xù)jQuery基礎(1)) 第5章 DOM節(jié)點的復制與替換 (1)DOM拷貝clone() 克隆節(jié)點是DOM的常...
    凜0_0閱讀 1,513評論 0 8
  • 本節(jié)介紹各種常見的瀏覽器事件。 鼠標事件 鼠標事件指與鼠標相關的事件,主要有以下一些。 click 事件,dblc...
    許先生__閱讀 2,840評論 0 4
  • 第1章 鼠標事件 1-1 jQuery鼠標事件之click與dbclick事件 用交互操作中,最簡單直接的操作就是...
    mo默22閱讀 1,345評論 0 6

友情鏈接更多精彩內(nèi)容