更新记录

1.0.0(2026-02-06) 下载此版本

  • 首次发布
  • 支持 H5、微信/支付宝小程序、Android/iOS App、鸿蒙
  • Canvas 按端自动选用 type="2d" 或 canvas-id 方案
  • 支持 maxWidthRpx 弹窗内限宽、refreshScale 打开后刷新缩放
  • 暴露 reset、setSuccess、setFail、refreshScale 方法,便于与登录等业务联动

平台兼容性

uni-app(3.6.16)

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

slide-verify 滑块验证码组件

uni-app 多端滑块验证码组件,支持 H5、微信/支付宝等小程序、Android/iOS App、鸿蒙。

特性

  • 支持 H5、小程序、App、鸿蒙,Canvas 按端自动选用稳定方案(H5 用 type="2d",App/鸿蒙/小程序用 canvas-id + createCanvasContext)
  • 支持缩放、弹窗内限制宽度(maxWidthRpx)
  • 暴露 resetrefreshScalesetSuccesssetFail 方法,便于与登录等业务联动

安装

slide-verify.vue 放入项目(如 components/slide-verify/),按需引入。

基本用法

<template>
  <SlideVerify
    ref="slideRef"
    :background-img="captchaData.backgroundImg"
    :slider-img="captchaData.sliderImg"
    :block-y="captchaData.captchaY"
    :show-error-mask="showErrorMask"
    slider-text="按住滑块,拖动到合适位置"
    @success="onSuccess"
    @refresh="onRefresh"
  />
</template>

<script setup>
import SlideVerify from '@/components/slide-verify/slide-verify.vue'

const slideRef = ref(null)
const captchaData = ref({ backgroundImg: '', sliderImg: '', captchaY: 70 })
const showErrorMask = ref(false)

const onSuccess = (left) => {
  console.log('滑动结束,x 坐标(取整):', left)
  // 将 left 传给后端校验
}

const onRefresh = () => {
  // 重新请求验证码接口,更新 captchaData
}

// 验证失败时
slideRef.value?.setFail?.()
showErrorMask.value = true

// 刷新/重试时
showErrorMask.value = false
slideRef.value?.reset?.()
</script>

Props

属性 类型 默认值 说明
w Number 500 画布宽度(px)
h Number 250 画布高度(px)
blockX Number 155 拼图块逻辑 x(一般由后端给出)
blockY Number 70 拼图块垂直位置,与后端 captchaY 一致
sliderText String 按住滑块,拖动到合适位置 滑块提示文案
backgroundImg String '' 背景图 base64 或 data URL
sliderImg String '' 拼图块图 base64 或 data URL
showErrorMask Boolean false 是否显示“验证失败”遮罩
errorText String 验证失败,请根据提示重新操作 失败提示文案
maxWidthRpx Number 0 最大宽度(rpx),弹窗内可传 536 等避免超出

事件

事件名 说明 回调参数
success 用户松手完成滑动 left: number(取整后的 x 坐标)
refresh 用户点击刷新图标 -

方法(通过 ref 调用)

方法 说明
reset() 重置滑块与画布,并重新绘制当前 backgroundImg/sliderImg
refreshScale() 重新计算缩放(如弹窗打开后调用)
setSuccess() 设为成功状态(绿色)
setFail() 设为失败状态(红色)

弹窗内使用

弹窗内建议限制宽度并打开后刷新缩放,避免超出:

<SlideVerify
  ref="slideRef"
  :max-width-rpx="536"
  :background-img="captchaData.backgroundImg"
  :slider-img="captchaData.sliderImg"
  :block-y="captchaData.captchaY"
  @success="onSuccess"
  @refresh="onRefresh"
/>
<!-- 弹窗打开后 -->
slideRef.value?.refreshScale?.()

平台说明

  • H5:使用 type="2d" + getContext('2d')
  • 小程序 / 鸿蒙 / Android·iOS App:使用 canvas-id + uni.createCanvasContext,保证各端显示稳定

许可证

MIT

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。