更新记录
1.0.0(2025-12-31) 下载此版本
功能
平台兼容性
uni-app(4.62)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | - | - | - | - | - |
signature-board 手写签名板
简介
一个支持横屏手写签名的 Canvas 组件,自动旋转 90 度输出签名图片,完美兼容 H5、微信小程序、APP 等多端平台。
特性
- ✅ 横屏签名:自动旋转 90 度,适合横屏签名场景
- ✅ 多端兼容:完美支持 H5、微信小程序、APP
- ✅ 高度可定制:支持自定义线条颜色、粗细、按钮样式等
- ✅ Base64 输出:直接输出 base64 格式图片,方便上传
- ✅ 无依赖:不依赖任何第三方库
- ✅ Vue2/Vue3:同时支持 Vue2 和 Vue3
安装
方式一:通过 uni_modules 导入(推荐)
- 在 DCloud 插件市场找到本插件
- 点击右侧的
使用 HBuilderX 导入插件或下载插件ZIP - 导入到项目的
uni_modules目录
方式二:手动导入
将 signature-board 文件夹复制到项目的 uni_modules 目录下。
使用方法
基础使用
<template>
<view class="page">
<signature-board
@cancel="handleCancel"
@reset="handleReset"
@confirm="handleConfirm"
/>
</view>
</template>
<script setup>
const handleCancel = () => {
console.log('取消签名');
};
const handleReset = () => {
console.log('重写签名');
};
const handleConfirm = (result) => {
console.log('签名完成,base64:', result.tempFilePath);
// 可以将 result.tempFilePath 上传到服务器
};
</script>
<style scoped>
.page {
width: 100vw;
height: 100vh;
}
</style>
自定义样式
<template>
<signature-board
:lineWidth="5"
lineColor="#FF0000"
bgColor="#F0F0F0"
primaryColor="#007AFF"
resetBgColor="#999999"
cancelText="返回"
resetText="清空"
confirmText="完成"
emptyTip="请先进行签名"
errorTip="签名生成失败,请重试"
@confirm="handleConfirm"
/>
</template>
API
Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| lineWidth | 签名线条粗细 | Number | 3 |
| lineColor | 签名线条颜色 | String | #000000 |
| bgColor | 画布背景颜色 | String | #FFFFFF |
| cancelText | 取消按钮文字 | String | 取消 |
| resetText | 重写按钮文字 | String | 重写 |
| confirmText | 确认按钮文字 | String | 确认 |
| emptyTip | 未签名提示文字 | String | 请先签名 |
| errorTip | 生成失败提示文字 | String | 生成签名失败 |
| primaryColor | 主题颜色(确认按钮和取消按钮边框) | String | #784E23 |
| resetBgColor | 重写按钮背景颜色 | String | #CCCCCC |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| cancel | 点击取消按钮时触发 | - |
| reset | 点击重写按钮时触发 | - |
| confirm | 点击确认按钮时触发 | { tempFilePath: string } |
confirm 事件返回值
{
tempFilePath: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...' // base64 格式的签名图片
}
注意事项
- 容器尺寸:组件会占满父容器的 100% 宽高,请确保父容器有明确的尺寸
- 横屏签名:组件设计为横屏使用,输出的图片会自动旋转 90 度
- 图片格式:输出的图片为 PNG 格式的 base64 字符串
- 平台差异:
- H5 端使用 DOM Canvas 进行旋转
- 小程序端使用 Canvas API 进行旋转
- APP 端使用 compressImage API 进行旋转
常见问题
1. 签名图片如何上传?
const handleConfirm = async (result) => {
// 方式一:直接上传 base64
await uploadToServer(result.tempFilePath);
// 方式二:转换为文件后上传
const file = base64ToFile(result.tempFilePath);
await uploadFile(file);
};
2. 如何设置画布大小?
组件会自动占满父容器,通过设置父容器的尺寸来控制画布大小:
<view style="width: 100vw; height: 100vh;">
<signature-board />
</view>
3. 小程序中签名不流畅?
确保在 canvas 上添加了 disable-scroll 属性(组件已内置)。
更新日志
查看 changelog.md
许可证
MIT License

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 12
赞赏 0
下载 12779021
赞赏 1833
赞赏
京公网安备:11010802035340号