Vue 滑动验证组件
Vue 滑动验证组件 vue-monoplasty-slide-verify
vue-monoplasty-slide-verify
是一个基于 Vue.js 的滑动验证码组件,常用于防止机器人提交表单等安全验证场景。
安装与基本使用
安装
npm install vue-monoplasty-slide-verify --save
# 或
yarn add vue-monoplasty-slide-verify
全局注册
import Vue from 'vue'
import SlideVerify from 'vue-monoplasty-slide-verify'Vue.use(SlideVerify)
局部注册
import SlideVerify from 'vue-monoplasty-slide-verify'export default {components: {SlideVerify}
}
基本使用示例
<template><div><slide-verifyref="slideVerify":accuracy="5"@success="onSuccess"@fail="onFail"@refresh="onRefresh"></slide-verify><button @click="handleClick">手动验证</button></div>
</template><script>
export default {methods: {onSuccess() {alert('验证成功')},onFail() {alert('验证失败')},onRefresh() {console.log('刷新验证码')},handleClick() {// 手动验证this.$refs.slideVerify.validate()}}
}
</script>
主要属性配置
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
width | Number | 310 | 验证区域的宽度 |
height | Number | 155 | 验证区域的高度 |
sliderSize | Number | 50 | 滑块的大小(宽度) |
accuracy | Number | 5 | 验证精度(1-10),数值越大要求滑块位置越精确 |
show | Boolean | true | 是否显示组件 |
imgs | Array | [] | 自定义背景图片数组 |
language | String | ‘zh’ | 语言 (‘zh’/‘en’) |
tips | String | null | 自定义提示文字 |
isCircle | Boolean | false | 是否使用圆形滑块 |
bgColor | String | null | 背景颜色 |
textColor | String | null | 文字颜色 |
sliderText | String | null | 滑块上的文字 |
refreshIcon | String | ‘↻’ | 刷新图标 |
range | Number | 10 | 滑块可拖动的范围(百分比) |
方法
方法名 | 说明 |
---|---|
validate() | 手动触发验证 |
reset() | 重置验证组件 |
refresh() | 刷新验证码(更换背景图) |
事件
事件名 | 说明 | 回调参数 |
---|---|---|
success | 验证成功时触发 | 无 |
fail | 验证失败时触发 | 无 |
refresh | 点击刷新按钮时触发 | 无 |
高级用法
自定义样式
<slide-verify:slider-text="'请滑动滑块'":bg-color="'#f5f7fa'":text-color="'#606266'":refresh-icon="'↻'":is-circle="true"
></slide-verify>
自定义背景图片
<template><slide-verify :imgs="imgArray"></slide-verify>
</template><script>
export default {data() {return {imgArray: [require('@/assets/bg1.jpg'),require('@/assets/bg2.jpg'),require('@/assets/bg3.jpg')]}}
}
</script>
手动控制验证
<template><div><slide-verify ref="slideVerify"></slide-verify><button @click="handleVerify">手动验证</button></div>
</template><script>
export default {methods: {handleVerify() {this.$refs.slideVerify.validate().then(() => {console.log('验证成功')}).catch(() => {console.log('验证失败')})}}
}
</script>
注意事项
- 移动端适配:组件本身对移动端有基本适配,但可能需要额外样式调整
- 安全性:前端验证不能替代后端验证,建议在服务端再做一次验证
- 性能:自定义图片较多时可能影响加载性能
- 自定义样式:可以通过覆盖CSS类名实现深度定制
常见问题解决
1. 图片加载失败
确保自定义图片路径正确,建议使用require
引入图片资源
2. 验证不准确
调整accuracy
属性,数值越大验证越严格
3. 样式冲突
添加scoped属性或使用深度选择器修改样式:
/* 使用深度选择器 */
::v-deep .slide-verify-slider {background-color: #409eff;
}
这个组件提供了简单易用的滑动验证功能,适合大多数Web应用的安全验证需求。