当前位置: 首页 > news >正文

邹城建网站中国新闻社山西分社

邹城建网站,中国新闻社山西分社,旅游建设网站,教育网站官网入口1.JS实现 前端实现签名功能#xff0c;通常是通过在页面上创建一个可绘制的区域#xff0c;用户可以用鼠标或触摸设备进行签名。这个区域通常是一个canvas元素#xff0c;结合JavaScript来处理绘制和保存签名。下面是一个简单的实现步骤#xff1a; 1.1. 创建HTM…1.JS实现 前端实现签名功能通常是通过在页面上创建一个可绘制的区域用户可以用鼠标或触摸设备进行签名。这个区域通常是一个canvas元素结合JavaScript来处理绘制和保存签名。下面是一个简单的实现步骤 1.1. 创建HTML页面 首先需要在页面中添加一个canvas元素用于用户签名。 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleSignature Pad/titlestylecanvas {border: 1px solid #000;width: 100%;max-width: 600px;height: 300px;}button {margin-top: 10px;}/style /head bodyh1Signature Pad/h1canvas idsignatureCanvas/canvasbrbutton idclearButtonClear/buttonbutton idsaveButtonSave/buttonimg idsavedImage altSaved Signature styledisplay:none; /script srcsignature.js/script /body /html1.2. 添加JavaScript来处理签名 接下来在signature.js中编写JavaScript代码来处理签名的绘制、清除和保存。 // 获取Canvas元素和2D绘图上下文 const canvas document.getElementById(signatureCanvas); const ctx canvas.getContext(2d);// 设定Canvas尺寸 canvas.width canvas.offsetWidth; canvas.height canvas.offsetHeight;// 初始化绘图状态 let drawing false; let lastX 0; let lastY 0;// 开始绘制 canvas.addEventListener(mousedown, (e) {drawing true;[lastX, lastY] [e.offsetX, e.offsetY]; });canvas.addEventListener(mousemove, (e) {if (!drawing) return;ctx.beginPath();ctx.moveTo(lastX, lastY);ctx.lineTo(e.offsetX, e.offsetY);ctx.stroke();[lastX, lastY] [e.offsetX, e.offsetY]; });canvas.addEventListener(mouseup, () drawing false); canvas.addEventListener(mouseout, () drawing false);// 移动端支持 canvas.addEventListener(touchstart, (e) {drawing true;const touch e.touches[0];const rect canvas.getBoundingClientRect();[lastX, lastY] [touch.clientX - rect.left, touch.clientY - rect.top]; });canvas.addEventListener(touchmove, (e) {if (!drawing) return;const touch e.touches[0];const rect canvas.getBoundingClientRect();ctx.beginPath();ctx.moveTo(lastX, lastY);ctx.lineTo(touch.clientX - rect.left, touch.clientY - rect.top);ctx.stroke();[lastX, lastY] [touch.clientX - rect.left, touch.clientY - rect.top]; });canvas.addEventListener(touchend, () drawing false);// 清除Canvas document.getElementById(clearButton).addEventListener(click, () {ctx.clearRect(0, 0, canvas.width, canvas.height); });// 保存签名为图片 document.getElementById(saveButton).addEventListener(click, () {const dataURL canvas.toDataURL(image/png);const img document.getElementById(savedImage);img.src dataURL;img.style.display block; });1.3. 关键点解释 Canvas绘图通过监听mousedown、mousemove、mouseup事件来检测鼠标的操作并根据鼠标的移动轨迹在canvas上绘制线条。移动端支持监听touchstart、touchmove和touchend事件确保在触屏设备上也能绘制签名。清除签名通过clearRect方法清除canvas的内容。保存签名通过canvas.toDataURL()方法将签名转换为图片数据并显示在页面上。 1.4. 额外功能 下载签名图片可以进一步实现下载签名图片的功能使用a标签和download属性。 const downloadButton document.createElement(‘a’); downloadButton.href dataURL; downloadButton.download ‘signature.png’; downloadButton.click(); 1.5. 使用库简化开发 如果需要更加复杂和完善的功能可以使用第三方库例如Signature Pad它提供了更多配置和功能。 2.Vue实现 在Vue项目中实现PC端和移动端的签名功能通常会使用canvas元素结合JavaScript绘图或使用专门的签名组件库来简化实现。以下是实现签名功能的两个推荐方法 方法 1: 手动实现签名功能使用 canvas 你可以在Vue中手动实现签名功能类似于前端原生canvas实现的方法。 1 创建签名组件 首先创建一个Vue组件来处理签名功能。 templatedivh2Signature Pad/h2canvas refsignatureCanvas classsignature-canvas mousedownstartDrawing mousemovedraw mouseupstopDrawing mouseoutstopDrawingtouchstartstartDrawing touchmovedraw touchendstopDrawing/canvasbutton clickclearCanvasClear/buttonbutton clicksaveSignatureSave/buttonimg v-ifsavedImage :srcsavedImage altSignature Image //div /templatescript export default {data() {return {drawing: false,lastX: 0,lastY: 0,ctx: null,savedImage: null};},mounted() {const canvas this.$refs.signatureCanvas;canvas.width canvas.offsetWidth;canvas.height canvas.offsetHeight;this.ctx canvas.getContext(2d);this.ctx.lineWidth 2;this.ctx.strokeStyle #000;},methods: {startDrawing(event) {this.drawing true;const { x, y } this.getMousePosition(event);this.lastX x;this.lastY y;},draw(event) {if (!this.drawing) return;const { x, y } this.getMousePosition(event);this.ctx.beginPath();this.ctx.moveTo(this.lastX, this.lastY);this.ctx.lineTo(x, y);this.ctx.stroke();this.lastX x;this.lastY y;},stopDrawing() {this.drawing false;},clearCanvas() {const canvas this.$refs.signatureCanvas;this.ctx.clearRect(0, 0, canvas.width, canvas.height);},saveSignature() {const canvas this.$refs.signatureCanvas;this.savedImage canvas.toDataURL(image/png);},getMousePosition(event) {const rect this.$refs.signatureCanvas.getBoundingClientRect();const x event.clientX || event.touches[0].clientX - rect.left;const y event.clientY || event.touches[0].clientY - rect.top;return { x: x - rect.left, y: y - rect.top };}} }; /scriptstyle .signature-canvas {border: 1px solid #000;width: 100%;max-width: 600px;height: 300px; } /style2关键点 使用Vue的mounted钩子获取canvas上下文并初始化绘图环境。通过mousedown、mousemove、mouseup等事件来处理PC端的绘图操作同时监听touchstart、touchmove等事件处理移动端的绘图。saveSignature方法将签名保存为图片base64格式并在页面上显示。 方法 2: 使用第三方库 Signature Pad Signature Pad是一个流行的JavaScript库支持PC和移动端的签名功能支持撤销、重做、保存等功能。可以将它集成到Vue中来简化实现。 1安装 Signature Pad 首先通过npm安装 signature_pad 库 npm install signature_pad2创建Vue组件并使用Signature Pad templatedivh2Signature Pad/h2canvas refsignatureCanvas classsignature-canvas/canvasbutton clickclearCanvasClear/buttonbutton clicksaveSignatureSave/buttonimg v-ifsavedImage :srcsavedImage altSignature Image //div /templatescript import SignaturePad from signature_pad;export default {data() {return {signaturePad: null,savedImage: null};},mounted() {const canvas this.$refs.signatureCanvas;canvas.width canvas.offsetWidth;canvas.height canvas.offsetHeight;this.signaturePad new SignaturePad(canvas, {backgroundColor: rgb(255, 255, 255), // 白色背景penColor: rgb(0, 0, 0) // 黑色笔迹});},methods: {clearCanvas() {this.signaturePad.clear();},saveSignature() {if (!this.signaturePad.isEmpty()) {this.savedImage this.signaturePad.toDataURL(image/png);} else {alert(Please provide a signature first.);}}} }; /scriptstyle .signature-canvas {border: 1px solid #000;width: 100%;max-width: 600px;height: 300px; } /style3Signature Pad库的优势 跨平台支持PC端和移动端。撤销功能你可以调用signaturePad.undo()来实现撤销功能。保存图片提供多种格式如PNG、JPG、SVG来保存签名。性能优异对于高分辨率的签名场景提供了平滑的绘图体验。 推荐的Vue签名组件库 1vue-signature-pad vue-signature-pad 是一个基于 Signature Pad 的 Vue 封装简化了签名功能的集成和使用。 安装 npm install vue-signature-pad使用 templatedivVueSignaturePad refsignaturePad :optionsoptions /button clickclearSignatureClear/buttonbutton clicksaveSignatureSave/buttonimg v-ifsavedImage :srcsavedImage altSignature Image //div /templatescript import VueSignaturePad from vue-signature-pad;export default {components: { VueSignaturePad },data() {return {options: {penColor: black,backgroundColor: white},savedImage: null};},methods: {clearSignature() {this.$refs.signaturePad.clear();},saveSignature() {if (!this.$refs.signaturePad.isEmpty()) {this.savedImage this.$refs.signaturePad.saveSignature();} else {alert(Please provide a signature first.);}}} }; /script2vue-canvas-signature vue-canvas-signature 是另一个常用的签名组件支持多种自定义选项。 安装 npm install vue-canvas-signature使用 templatedivvue-canvas-signature refcanvasSignature /button clickclearSignatureClear/buttonbutton clicksaveSignatureSave/buttonimg v-ifsavedImage :srcsavedImage altSignature Image //div /templatescript import { VueCanvasSignature } from vue-canvas-signature;export default {components: { VueCanvasSignature },data() {return {savedImage: null};},methods: {clearSignature() {this.$refs.canvasSignature.clear();},saveSignature() {this.savedImage this.$refs.canvasSignature.saveAsImage();}} }; /script总结 手动实现签名功能 适合更灵活的场景但需要较多的手动编写。使用 Signature Pad 或 vue-signature-pad 等库可以简化实现并提供更完善的功能适用于PC端和移动端的签名需求。
http://www.dnsts.com.cn/news/209636.html

相关文章:

  • 个人网站建设工作室2019年度最火关键词
  • 北京市保障性住房建设投资中心官方网站做微商能利用的网站有哪些问题
  • 文化传媒建设网站没网站怎么做京东联盟
  • 河南网站建设设计广州黄浦区建设局网站
  • 网站宽度设置.net网站架设
  • 迪哥哪个网站上做游戏直播山东网络建站推广
  • 个人域名用来做淘宝客网站长沙网
  • 五星级酒店网站建设做外销网站服务器好吗
  • 一般做网站价格深圳燃气公司地址
  • 兴安盟网站建设效果图专业制作
  • windows2008 iis 网站wordpress图文安装
  • 广州网站制作费用简单手工
  • 网站整站模板下载工具前端为啥不用wordpress
  • 做网站每一步的是什么湖南企业网络推广软件
  • 如何免费申请公司网站建筑工程电影网
  • 乐都网站建设免费建站网站哪个好
  • 比较好的公司网站海南省建设工程质量安全检测协会网站
  • 旅游网站制作教程公司网站开发项目
  • php招投标网站源码做网站需要服务器查询吗
  • 玉环市建设局网站巴彦淖尔网站制作开发
  • 网站建设银行业务预约纪念币猪年纪念币预约网站建设需要的语言
  • 建设局发公告的网站办公空间设计公司排名
  • 苏州知名网站建设定制秦皇岛优化seo
  • 一般ppt模板都会发不到什么网站中国工程建设标准化协会网站
  • 互联网广告行业前景杭州seo网站哪家好
  • 遵义公司网站搭建多少钱短视频营销策略
  • js网站绿色营销案例100例
  • 企业网站整合韩国网站如何切换中文
  • 开个网站做网站备案用英文怎么说
  • 58同城网站的建设目标是什么建设通查项目经理