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 相关文章推荐
幻宇的层模拟窗口效果-提供演示和下载
Jan 20 Javascript
jquery如何实现锚点链接之间的平滑滚动
Dec 02 Javascript
JS常用表单验证方法总结
May 22 Javascript
讲解JavaScript中for...in语句的使用方法
Jun 03 Javascript
Javascript类型系统之String字符串类型详解
Jun 21 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
原生JS实现幻灯片
Feb 22 Javascript
ES6正则的扩展实例详解
Apr 25 Javascript
浅谈vue-lazyload实现的详细过程
Aug 22 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
Sep 10 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
Jun 24 Javascript
如何换个角度使用VUE过滤器详解
Sep 11 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 mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
Python验证码识别处理实例
2015/12/28 Python
深入理解Python中的内置常量
2017/05/20 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
python语言中with as的用法使用详解
2018/02/23 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python判断有效的数独算法示例
2019/02/23 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
Django 拆分model和view的实现方法
2019/08/16 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
几个常见的消息中间件(MOM)
2014/01/08 面试题
促销活动策划方案
2014/01/12 职场文书
工作证明格式及范本
2014/09/12 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
公司放假通知范文
2015/04/14 职场文书