vue 使用 canvas 实现手写电子签名


Posted in Javascript onMarch 06, 2020

功能

  1. 兼容 PC 和 Mobile;
  2. 画布自适应屏幕大小变化(窗口缩放、屏幕旋转时画布无需重置,自动校正坐标偏移);
  3. 自定义画布尺寸(导出图尺寸),画笔粗细、颜色,画布背景色;
  4. 支持裁剪 (针对需求:有的签字需要裁剪掉四周空白)。
  5. 导出图片格式为 base64 ;
  6. 示例demo

安装

npm install vue-esign --save

使用

main.js 中引入

import vueEsign from 'vue-esign'
Vue.use(vueEsign)

页面中使用

必须设置 ref ,用来调用组件的两个内置方法 reset() 和 generate() 无需给组件设置 style 的宽高,如果画布的 width 属性值没超出父元素的样式宽度,则该组件的样式宽度就是画布宽度,超出的话,组件样式宽度则是父元素的100%; 所以只需设置好父元素的宽度即可;

<vue-esign ref="esign" :width="800" :height="300" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" />
<button @click="handleReset">清空画板</button> 
<button @click="handleGenerate">生成图片</button>
data () {
 return {
 lineWidth: 6,
 lineColor: '#000000',
 bgColor: '',
 resultImg: '',
 isCrop: false
 }
},
methods: {
 handleReset () {
 this.$refs.esign.reset()
 },
 handleGenerate () {
 this.$refs.esign.generate().then(res => {
 this.resultImg = res
 }).catch(err => {
 alert(err) // 画布没有签字时会执行这里 'Not Signned'
 })
 }
}

说明

属性 类型 默认值 说明
width Number 800 画布宽度,即导出图片的宽度
height Number 300 画布高度,即导出图片的高度
lineWidth 4 Number 画笔粗细
lineColor String #000000 画笔颜色
bgColor String 画布背景色,为空时画布背景透明, 支持多种格式 '#ccc','#E5A1A1','rgb(229, 161, 161)','rgba(0,0,0,.6)','red'
isCrop Boolean false 是否裁剪,在画布设定尺寸基础上裁掉四周空白部分

两个内置方法,通过给组件设置 ref 调用:

清空画布

this.$refs.esign.reset()

生成图片

this.$refs.esign.generate().then(res => {
 console.log(res) // base64图片
}).catch(err => {
 alert(err) // 画布没有签字时会执行这里 'Not Signned'
})

有任何问题请到此提issue

vue 使用 canvas 实现手写电子签名

总结

到此这篇关于vue 使用 canvas 实现手写电子签名的文章就介绍到这了,更多相关vue 手写电子签名内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS实现切换标签页效果实例代码
Nov 01 Javascript
JS字符串截取函数实例
Dec 27 Javascript
javaScript的函数对象的声明详解
Feb 06 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
Aug 04 Javascript
Three.js实现浏览器变动时进行自适应的方法
Sep 26 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
Aug 12 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
Oct 28 Javascript
javascript浅层克隆、深度克隆对比及实例解析
Feb 09 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 #Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 #Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 #Javascript
javascript中可能用得到的全部的排序算法
Mar 05 #Javascript
js的Object.assign用法示例分析
Mar 05 #Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
Mar 05 #Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 #Javascript
You might like
PHP的cURL库简介及使用示例
2015/02/06 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Django中的用户身份验证示例详解
2019/08/07 Python
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
美国滑雪板和装备购物网站:Skis.com
2018/12/20 全球购物
土木工程师岗位职责
2013/11/24 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
英语教师自荐信
2014/05/26 职场文书
法院授权委托书范文
2014/08/02 职场文书
单位实习鉴定评语
2015/01/04 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
2015年司法局工作总结
2015/05/22 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python