电子签名?玩具罢了!(web前端)

news/2024/10/21 7:30:21/

需要的前置知识:简单的canvas绘制线路过程

let canvas = document.getElementById(id);
//id为canvas标签元素的id,或通过其它方法获取标签
let ctx = canvas.getContext('2d');
//规定为2d绘制图片,即确定为2d画笔
ctx.strokeStyle = "white"
//画笔的颜色为白色
ctx.beginPath();
//开始绘制
ctx.moveTo(lastX, lastY); //画笔落笔的点数,即开始绘制的位置
ctx.lineTo(lineX, lineY); //画笔结束的位置,即结束绘制的位置
ctx.stroke();             //位置填充完毕,绘制线路,即将两个点连在一起

了解以上的内容便可以进行电子签名了。

原理:监听鼠标的点击、按下、松开、以及移动事件,根据这些事件绘制路线形成签名,最后将canvas转为图片,然后发给后端就行啦

实现:


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><style>canvas {border: 1px solid #ccc;}img {width: 100px;height: 100px;}</style>
</head><body><canvas id="signature" width="400" height="200" ></canvas><button onclick="fn()">转换图片</button><a href="#" id="download" download="">下载图片</a><img src="" alt="" id="imgurl"><!-- 如果不给a标签加#,会导致页面重新刷新,当然你可以去写js代码阻止这个默认行为 -->
</body>
<script>
//初始化画布以及画笔var canvas = document.getElementById('signature');var ctx = canvas.getContext('2d');var flg= false;var lastX = 0;var lastY = 0;canvas.addEventListener('mousedown', function (e) {flg = true;//鼠标按下,flg为true,表示可以进行绘制[lastX, lastY] = [e.offsetX, e.offsetY];//es6新增,交换两个变量的值console.log(lastX, lastY);});canvas.addEventListener('mousemove', function (e) {if (flg) {ctx.strokeStyle = "black"ctx.beginPath();ctx.moveTo(lastX, lastY);ctx.lineTo(e.offsetX, e.offsetY);ctx.stroke();[lastX, lastY] = [e.offsetX, e.offsetY];}});canvas.addEventListener('mouseup', function (e) {flg= false;});const fn = () => {var dataURL = canvas.toDataURL('image/png');var downloadBtn = document.getElementById('download');downloadBtn.href = dataURL;imgurl.src = dataURLconsole.log('成功');}
</script></html>

最终效果图
在这里插入图片描述


http://www.ppmy.cn/news/856601.html

相关文章

亚马逊上儿童玩具需要提供的认证介绍

儿童玩具上架亚马逊美国站&#xff0c;需要提供CPC认证&#xff0c;儿童玩具上架亚马逊欧洲站&#xff0c;需要提供欧盟CE认证EN71测试报告。儿童玩具主要的出口市场是美国和欧洲&#xff0c; 越来越多的国外用户喜欢在网上购买儿童玩具&#xff0c;儿童玩具出口和上架亚马逊各…

玩具订购热线

前天在网上查公证处的地址&#xff0c;在浏览器里输入关键字&#xff0c;然后找到很多相关信息&#xff0c;以及地图。整个操作过程&#xff0c;儿子一直在旁边看着&#xff0c;也没说话。 昨天在吃晚饭的时候&#xff0c;儿子一个人在玩电脑&#xff08;在幼儿园吃过晚饭了&a…

通过GWO算法对8个发电机进行了最佳调度编码(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 通过GWO&#xff08;Grey Wolf Optimization&#xff09;算法对8个发电机进行最佳调度编码是一种优化问题的解决方法。GWO算法灵…

div 边框颜色设置

box-shadow: 0px 0px 10px #00cdfe inset;

html如何给div加边框

<div style"border: 1px solid red;">

点击DIV显示改变边框颜色

div{width:200px;height:100px;border:1px solid #ccc; }div:hover{border:1px solid #f40;z-index:1; 或者position:relative; }

html solid 属性,html solid属性 Html 中如何设置 div边框的颜色

麻烦家说下。它般都用在何处&#xff1f;&#xff1f; 是指css border-tyle 吧1.none:表示没 2.solid&#xff1a;表示单线 3.double&#xff1a;表示双线 4.groove&#xff1a;表示凹槽 5.redge:表示皱纹 6.dotted:点线(貌似IE6下效果等同于dashed) 7.dashed:虚线其他属性去尝…