更新记录

1.0.0(2026-01-29) 下载此版本

多端支持:兼容 H5、微信小程序、App 等主流平台。 横竖屏切换:内置横屏模式,自动旋转坐标系,适合全屏签名场景。 笔画流畅:使用二次贝塞尔曲线连接点,笔迹圆润平滑。 功能丰富:支持撤销(Undo)、重写(Clear)、生成图片(Save)。 自定义样式:可配置笔触颜色、大小、背景色等。


平台兼容性

uni-app(3.6.15)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟

其他

多语言 暗黑模式 宽屏模式
× ×

x-signature 手写签名板

基于 uni-app 的手写签名组件,支持多端(H5、小程序、App),支持横屏/竖屏切换、撤销、清空、生成 Base64 图片等功能。

功能特点

  • 多端支持:兼容 H5、微信小程序、App 等主流平台。
  • 横竖屏切换:内置横屏模式,自动旋转坐标系,适合全屏签名场景。
  • 笔画流畅:使用二次贝塞尔曲线连接点,笔迹圆润平滑。
  • 功能丰富:支持撤销(Undo)、重写(Clear)、生成图片(Save)。
  • 自定义样式:可配置笔触颜色、大小、背景色等。

引入方式

<script>
import xSignature from '@/components/x-signature/x-signature.vue';

export default {
  components: {
    xSignature
  }
}
</script>

基本用法

<template>
  <view>
    <x-signature
      ref="signature"
      width="100%"
      height="300px"
      penColor="black"
      :penSize="4"
    ></x-signature>

    <button @click="clear">重写</button>
    <button @click="undo">撤销</button>
    <button @click="save">保存</button>
  </view>
</template>

<script>
export default {
  methods: {
    clear() {
      this.$refs.signature.clear();
    },
    undo() {
      this.$refs.signature.undo();
    },
    async save() {
      try {
        const res = await this.$refs.signature.save();
        console.log('保存路径:', res.tempFilePath);
        console.log('Base64:', res.base64);
      } catch (e) {
        console.error('保存失败:', e.message);
      }
    }
  }
}
</script>

API

Props 属性

参数 类型 默认值 说明
canvasId String 'x-sig-canvas' Canvas 的唯一标识 ID
width String '100%' 组件宽度
height String '300px' 组件高度(竖屏模式下生效)
penColor String '#000000' 笔触颜色
penSize Number 4 笔触粗细(像素)
backgroundColor String 'transparent' 画布背景色
orientation String 'portrait' 方向模式:'portrait' (竖屏) 或 'landscape' (横屏)

Methods 方法

通过 ref 调用组件方法:

方法名 参数 返回值 说明
clear() - - 清空画布,重置历史记录
undo() - - 撤销上一步操作
save() - Promise 保存签名。成功返回 { tempFilePath, base64 },失败抛出 Error

Events 事件

事件名 说明 回调参数
@start 开始书写时触发 -
@signing 书写过程中持续触发 event
@end 书写结束(手指抬起)时触发 -

注意事项

  1. 横屏模式 (landscape)

    • 当设置 orientation="landscape" 时,组件会自动变为 fixed 定位,全屏覆盖,并旋转 90 度。
    • 请确保父容器允许全屏遮罩。
    • 横屏模式下,坐标系会自动映射,无需手动处理。
  2. 生成图片

    • save() 方法返回的 base64 数据在不同端(App/H5/小程序)已做兼容处理。
    • 若签名为空,save() 会抛出 Error: Signature is empty
  3. App 端权限

    • App 端保存图片可能需要文件读写权限,请在 manifest.json 中配置。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议