效果图:

实现思路:

  1. 使用canvas来实现手写签名的功能,然后将canvas转化为图片
  2. 通过监听鼠标mousedown/mousemove/mouseup/mouseleave 来实现

html布局

  <div class="container"><canvas id="canvas" width="500" height="500"></canvas><div><button id="clear">清空画布</button>线条粗细<select id="selWidth"><option value="2">2</option><option value="4">4</option><option value="6">6</option><option value="9">9</option></select>线条颜色<select id="selColor"><option value="red">red</option><option value="blue">blue</option><option value="pink">pink</option><option value="orange">orange</option></select><button id="imgInfo">保存签名</button></div><div class="imgs" id="imgs"></div></div>

css样式:

* {margin: 0;padding: 0;
}
#canvas {border: 1px solid black;
}

javascript:

 //1.获取canvasvar myCanvas = document.getElementById("canvas");//获取2d对象var ctx = myCanvas.getContext("2d");//清空画布var clear = document.getElementById("clear");//线条var selWidth = document.getElementById("selWidth");// 颜色var selColor = document.getElementById("selColor");// 保存签名var imgInfo = document.getElementById("imgInfo");// 保存的盒子var imgs = document.getElementById("imgs");//控制线条是否画var isMouseMove = false;//线条位置var lastX, lastY;var widthVal = selWidth[0].value, colorVal = selColor[0].value;window.onload = function () {initCanvas();};//初始化function initCanvas() {//PC端var down = (e) => {isMouseMove = true;drawLine(event.pageX - myCanvas.offsetLeft,event.pageY - myCanvas.offsetTop,false);};let move = (e) => {if (isMouseMove) {drawLine(event.pageX - myCanvas.offsetLeft,event.pageY - myCanvas.offsetTop,true);}};let up = (e) => {isMouseMove = false;};let leave = (e) => {isMouseMove = false;};myCanvas.addEventListener("mousedown", down);myCanvas.addEventListener("mousemove", move);myCanvas.addEventListener("mouseup", up);myCanvas.addEventListener("mouseleave", leave);}//画线function drawLine(x, y, isT) {if (isT) {ctx.beginPath();ctx.lineWidth = widthVal; //设置线宽状态ctx.strokeStyle = colorVal; //设置线的颜色状态ctx.lineCap = 'round'ctx.lineJoin = "round";ctx.moveTo(lastX, lastY);ctx.lineTo(x, y);ctx.stroke();ctx.closePath();}// 每次移动都要更新坐标位置lastX = x;lastY = y;}//清空画图function clearCanvas() {imgs.innerHTML = ""ctx.beginPath();ctx.clearRect(0, 0, myCanvas.width, myCanvas.height);ctx.closePath(); //可加入,可不加入}//线条粗细function lineCrude() {let activeIndex = selWidth.selectedIndex;widthVal = selWidth[activeIndex].value;}//改变颜色function setColor() {let activeIndex = selColor.selectedIndex;colorVal = selColor[activeIndex].value;}//保存图片function saveImgInfo() {var images = myCanvas.toDataURL('image/png');imgs.innerHTML = `<img src='${images}'>`}clear.addEventListener("click", clearCanvas);selWidth.addEventListener("change", lineCrude);selColor.addEventListener("change", setColor);imgInfo.addEventListener("click", saveImgInfo);

手机端canvas实现电子签名
小程序canvas生成海报

canvas实现电子签名相关推荐

  1. 手机端canvas实现电子签名

    前言: 在上一篇文章中讲到了如何使用canvas在PC端实现电子签名,下面我们稍微修改一下代码在h5端也可以实现 效果图: 实现思路: 使用canvas来实现手写签名的功能,然后将canvas转化为图 ...

  2. 使用vue造个小轮子vue-asign,canvas生成电子签名,满足需求

    优化需求,内容是生成电子签名,发现好多个项目都重复写,于是打算自己造个小轮子,名字就叫vue-asign,说明文档如下: vue-asign Canvas 生成电子签名 支持vue2.vue3 演示d ...

  3. app canvas渲染后图片黑色_H5 基于 canvas 实现电子签名并生成PDF文档

    (给前端大全加星标,提升前端技能) 转自:coyota666 https://juejin.cn/post/6901273585428463624 前言 电子签名通俗来说就是通过技术手段实现在电子文档 ...

  4. html5 canvas签字,HTML5 canvas实现电子签名

    1.为什么要用到BASE64编码的图片信息Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一.Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.由于一些 ...

  5. Vue—使用canvas实现电子签名

    前言 实现签名的功能听着很复杂,其实很简单.使用canvas辅助的API和监听鼠标相关事件即可实现. 思考: 1.如何使用canvas画线 ? 2.如何判断在提交签名时判断是否有签名 ? 3.如何将c ...

  6. H5基于canvas实现电子签名并生成PDF文档

    关注公众号 前端开发博客,回复"加群" 加入我们一起学习,天天进步 作者:coyota666 链接:https://juejin.cn/post/69012735854284636 ...

  7. h5 使用canvas实现电子签名和图片的保存

    公司的业务表格登记需要使用上签名,所以做了一个电子签名的模块,网上看了很多相关资料,我选择使用jq 里面带有的签名功能,使用jq-signature.js来实现. 1.将jQuery和jq-signa ...

  8. 小程序 canvas 实现电子签名

    其实随意搜索一下还是有很多先例的,只是有些比较坑得自己筛选. https://blog.csdn.net/qq_36875339/article/details/81086205 这篇文章真是好,以至 ...

  9. 从一个 bug 中延伸出 canvas 最大内存限制和浏览器渲染原理

    本文作者:雨过天晴 https://zhuanlan.zhihu.com/p/540761999 前几天一个同事让我帮忙解决一个 bug,这个 bug 困扰他好几天了.这是一个 App 中的 Hybr ...

  10. 使用signature在移动端做电子签名canvas画板随触摸滚屏的bug

    在做移动端项目的时候,如果页面需要滚动,而页面上有signature实现的电子签名,就会发现手写的时候canvas画板会随着手指的滑动而滚动,导致不能正常签名. 解决办法:在canvas标签上注册一个 ...

最新文章

  1. 虚拟电脑键盘app_说到弹吉他,这几个APP你一定用得上
  2. 如何在数据表中存取图片 - 回复 三足乌 的问题
  3. Python之对list进行切片
  4. SecureCRT安装(5)
  5. 常见的web前端性能优化方法总结
  6. ZipEntry的使用
  7. Git和Code Review流程
  8. 软硬方式链接(快捷方式)
  9. php opc数据,OPC连接获取数据
  10. linux重置ilo,重启HPE管理芯片ILO5的5种方法(Reset ilo)
  11. Hive/MaxCompute SQL性能优化(三):数据倾斜优化实战
  12. 计算机操作系统是什么?
  13. 一键登录网易163邮箱
  14. 计算机专业学微积分有什么用,学微积分有什么用啊?
  15. Golang之自旋锁
  16. TI 评级报告 | RAI Finance:B,展望正面
  17. (爬取猫眼电影TOP100的电影信息(含图片、评分等))
  18. 模式识别与机器学习作业——SVM(Python实现)
  19. SpringBoot配置文件的修改
  20. 苹果youtube无法连接网络_杂项其一 “IOS系统某些app无法连接到网络,其他正常”解决办法...

热门文章

  1. SAP 采购信息记录
  2. 搭建 WordPress 博客教程
  3. 系统测试和验收测试的区别
  4. 串口服务器主要作用,串口服务器到底能干啥,作用,一看便知!
  5. 预约制成为汽车年检新常态
  6. 树莓派安装Ubuntu server无屏幕开机自动连接WIFI
  7. linux常用命令-part3
  8. Downward API
  9. 调查:人工智能技术的应用现状
  10. 动词ing形式的5种用法_动词ing形式的5种用法