Skip to content

Signature 签名

查看 sn-signature 的 2.0 版本差异

基础用法

  • 基于 canvas 的手写签名板,底部操作栏提供横/竖屏切换、撤销、重做、清空、设置与导出
  • 内置 17 种笔触(钢笔、毛笔、蜡笔、喷漆等),设置面板采用 Tabs + Swiper 分类:「笔触」(笔触类型、线条颜色与粗细)与「画布」(画布背景、网格背景),左右滑动或点选标签切换
  • 通过 ref 调用 undoredoclearexportImagesetLandscape 方法可编程控制签名板
vue
<template>
	<sn-signature @exported="onExported"></sn-signature>
</template>

更多演示请下载 demo 查看

进阶用法

自定义笔触

通过 brush 属性指定初始笔触,设置面板内也可实时切换;show-brush-settingsfalse 时隐藏面板中的笔触选项。

vue
<template>
	<sn-signature brush="pen" height="220" :show-brush-settings="true"></sn-signature>
</template>

横屏签名

点击操作栏的横屏图标可全屏横置签名板(Web 端以固定定位铺满视口,App 端调用原生全屏横屏);也可通过 ref 调用 setLandscape 方法控制。

vue
<template>
	<sn-signature ref="sigRef"></sn-signature>
</template>
<script lang="uts" setup>
	const sigRef = ref<SnSignatureComponentPublicInstance | null>(null)
	function toLandscape() {
		sigRef.value?.$callMethod('setLandscape', true)
	}
</script>

属性

参数说明类型默认值可选值
width签名板宽度,支持 $ 动态尺寸语法String | Number100%-
height签名板(画布区)高度,数字单位为 px,支持 $ 动态尺寸语法String | Number280-
bgColor画布背景颜色,同时作为导出图片的背景色String#FFFFFF-
lineColor签名线条颜色String#1F1F1F-
lineWidth线条粗细(px)Number3-
brush笔触样式SnSignatureBrushdefaultdefault(默认) | pen(钢笔) | gel(中性笔) | pencil(铅笔) | brush(毛笔) | marker(马克笔) | crayon(蜡笔) | fur(毛皮) | ink(墨水) | longfur(长绒毛) | ribbon(丝带) | shaded(阴影) | sketchy(速写) | spray(喷漆) | squares(方格) | circle(圆泡) | web(蛛网)
showBrushSettings设置面板中是否显示笔触选项Booleantruetrue | false
gridEnabled是否显示网格背景Booleanfalsetrue | false
gridColor网格线颜色String#B8B8B8-
gridLineWidth网格线宽(px)Number1-
gridDensity网格密度,即网格间距(px)Number20-
maxHistory最大撤销历史记录数Number20-
showActionBar是否显示底部操作栏(横竖屏、撤销、重做、清空、设置、导出)Booleantruetrue | false
drawerPosition设置面板滑出的方向Stringrightleft | righttop/bottom 视为 right
drawerWidth设置面板宽度String | Number300px-
aniTime设置面板动画时长,支持 $ 动态时长语法String | Number''-
customStyle自定义根节点样式UTSJSONObject | String''-
customClass根节点外部样式类String''-
canvasWrapClass画布容器外部样式类String''-
canvasWrapStyle自定义画布容器样式UTSJSONObject | String''-
barClass操作栏外部样式类String''-
barStyle自定义操作栏样式UTSJSONObject | String''-
toolClass操作栏工具按钮外部样式类String''-

签名笔触类型。

可选值备注
default默认
pen钢笔
gel中性笔
pencil铅笔
marker马克笔
brush毛笔
crayon蜡笔
fur毛皮
ink墨水
longfur长绒毛
ribbon丝带
shaded阴影
sketchy速写
spray喷漆
squares方格
circle圆泡
web蛛网

事件

名称类型说明
change(data: SignatureData) => Void签名内容变化时触发(一笔结束、撤销、重做、清空),data.dataUrl 为空字符串,width/height 为当前画布尺寸
exported(data: SignatureData) => Void导出签名图片成功后触发,data.dataUrl 为 base64 图片数据,width/height 为图片实际像素尺寸(已乘设备像素比)
undo() => Void撤销签名时触发
redo() => Void重做签名时触发
clear() => Void清空签名板时触发
orientationchange(landscape: boolean) => Void横竖屏切换时触发,参数为是否横屏

changeexported 事件回调参数。

名称类型必填描述
dataUrlStringbase64 图片数据(change 事件中为空字符串)
widthNumber图片宽度
heightNumber图片高度

方法

名称参数返回值描述
undo--撤销上一笔签名
redo--重做上一笔撤销的签名
clear--清空签名板
exportImage--将签名导出为 base64 图片并通过 exported 事件返回;画布未就绪或无内容时以 toast 提示且不导出
setLandscape(land: Boolean)-设置横屏(全屏)模式,true 进入横屏、false 退出

使用 MIT 协议