vue随机验证码组件的封装实现

本文实例为大家分享了vue随机验证码组件的具体代码,供大家参考,具体内容如下

由于工作需要自己做了一个验证码组件,灵活性不高,但是可以用,代码也不太复杂

<template>
 <div style="display: flex;justify-content: start;align-items: center;border-radius: 4px">
 <canvas style="" :width="contentWidth" :height="contentHeight" id="cav" @click="next()"></canvas>
 </div>
</template>

<script>
// import num from './components/cc'
export default {
 name: 'verificationCode',
 props: {
 fontSize: {
  type: Number,
  default: 20
 },
 contentWidth: {
  type: Number,
  default: 100
 },
 contentHeight: {
  type: Number,
  default: 40
 },
 verification: {
  type: String
 },
 refreshCode: {
  type: Boolean
 }
 },
 watch: {
 verification: function (newVal) {
  if (newVal.toLowerCase() === this.identify.toLowerCase()) {
  this.$emit('handleIdentify', true)
  } else {
  this.$emit('handleIdentify', false)
  }
 },
 refreshCode: function (newVal) {
  this.draw()
 }
 },
 mounted () {
 this.draw()
 },
 data () {
 return {
  identify: '',
  letter: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
 }
 },
 methods: {
 draw () {
  let self = this
  let text = this.randomNum()
  this.identify = text.join('')
  let ctx = document.getElementById('cav')
  let cav = ctx.getContext('2d')
  cav.clearRect(0, 0, self.contentWidth, self.contentHeight)
  let w = ctx.width
  let h = ctx.height
  cav.textBaseline = 'bottom'
  self.drawText(cav, text[0], 10, 10, self.randomDeg(0, 0.1), 20)
  self.drawText(cav, text[1], 20, 10, self.randomDeg(0, 0.1))
  self.drawText(cav, text[2], 25, 10, self.randomDeg(0, 0.1))
  self.drawText(cav, text[3], 30, 10, self.randomDeg(0, 0.1))
  let i
  for (i = 0; i < 3; i++) {
  self.drawLine(cav, self.randomDeg(0, 0.3 * w, 1), self.randomDeg(0, h, 1), self.randomDeg(0, w, 1), self.randomDeg(0, h, 1), self.randomDeg(0.8 * w, w, 1), self.randomDeg(0, h, 1))
  }
 },
 drawText (cav, text, x1, y1, route) {
  cav.beginPath()
  cav.fillStyle = '#ffe9db'
  cav.font = this.fontSize + 'px' + ' ' + '黑体'
  cav.translate(x1, y1)
  cav.rotate(Math.PI * route)
  cav.fillText(text, x1, y1)
  cav.fill()
  cav.rotate(-Math.PI * route)
  cav.translate(-(x1), -(y1))
 },
 drawLine (cav, x1, y1, x2, y2, x3, y3) {
  cav.beginPath()
  cav.strokeStyle = 'rgb(155, 204, 237)'
  cav.bezierCurveTo(x1, y1, x2, y2, x3, y3)
  cav.stroke()
 },
 randomNum () { // 生成随机字
  let i
  let letter = this.letter
  let text = []
  for (i = 0; i < 4; i++) {
  text.push(letter[Math.floor(Math.random() * 36)])
  }
  return text
 },
 randomDeg (min, max, f) { // 设置文字倾斜角度
  f = undefined ? Math.random() > 0.5 ? 1 : -1 : 1
  return f * (Math.random() * (max - min) + min)
 },
 next () {
  this.draw()
 }
 }
}
</script>

<style scoped>

</style>

样式什么的自己可以调一调,效果如下:

更多教程点击《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue实现倒计时获取验证码效果

    本文实例为大家分享了vue实现倒计时获取验证码效果的具体代码,供大家参考,具体内容如下 效果: 代码: <template> <div> <el-button :disabled="disabled" @click="sendcode" class="sendcode">{{btntxt}}</el-button> </div> </template> <script&

  • vue+element-ui集成随机验证码+用户名+密码的form表单验证功能

    在登入页面,我们往往需要通过输入验证码才能进行登入,那我们下面就详讲一下在vue项目中如何配合element-ui实现这个功能 第一步:自定义一个生产随机验证码的组件,其本质是使用canvas绘制,详细代码如下: <template> <div class="s-canvas"> <canvas id="s-canvas" :width="contentWidth" :height="contentHeig

  • 简单实现vue验证码60秒倒计时功能

    本文实例为大家分享了vue验证码倒计时60秒的具体代码,供大家参考,具体内容如下 html <span v-show="show" @click="getCode">获取验证码</span> <span v-show="!show" class="count">{{count}} s</span> js data(){ return { show: true, count: ''

  • vue 实现通过手机发送短信验证码注册功能

    效果如下: 代码如下: template代码: <el-main> <el-form :model="ReginForm" ref="ReginForm" :rules="rule" class="regform" label-width="0"> <h3 class="login-text">手机注册</h3> <el-form-i

  • vue获取验证码倒计时组件

    本文实例为大家分享了vue获取验证码倒计时组件,供大家参考,具体内容如下 之前写过一个计时函数,有计算误差,但是验证码的60秒倒计时可以忽略这一点点误差.直接上代码. <template> <div class="captcha-row"> <input class="captcha-input" placeholder="输入验证码" auto-focus /> <div v-if="show

  • VUE实现图片验证码功能

    本文实例为大家分享了VUE实现图片验证码的具体代码,供大家参考,具体内容如下 1. 概述 1.1 说明 在开发过程中,有时候需要使用图片验证码进行增加安全强度,在点击图片时更新新的图片验证码,记录此功能,以便后期使用. 2. 示例 2.1 vue示例代码 <template> <el-form style="width: 400px;"> <el-form-item style="height: 40px;margin-bottom: 20px;

  • Vue插件之滑动验证码

    本文实例为大家分享了Vue插件之滑动验证码的具体代码,供大家参考,具体内容如下 预览 目前仅前端实现,支持移动端滑动事件.版本V1.0.5 github文档地址 安装 npm install --save vue-monoplasty-slide-verify 使用方法: // main.js import Vue from 'vue'; import SlideVerify from 'vue-monoplasty-slide-verify'; Vue.use(SlideVerify); //

  • Vue实现验证码功能

    本文实例为大家分享了Vue实现验证码的具体代码,供大家参考,具体内容如下 1.效果 2.代码 2.1 创建js组件 内容 (可直接粘贴过去,需要改宽度和高度,修改_init方法中的宽和高) function GVerify (options) { // 创建一个图形验证码对象,接收options对象为参数 this.options = { // 默认options参数值 id: '', // 容器Id canvasId: 'verifyCanvas', // canvas的ID width: '

  • Vue中添加手机验证码组件功能操作方法

    什么是组件: 组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能.在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展. 写在前面: 今天要实现的功能是在 完善个人信息页面(vue)中添加手机验证码组件,当用户点击 手机选项时,弹出获取验证码组件,完成验证手机的功能: 这里考虑到功能的复用,我把当前弹出手机验证码的操作放在了单独的组件中: <template > <div>

  • vue生成随机验证码的示例代码

    本文介绍了vue生成随机验证码的示例代码,分享给大家,具体如下: 样式自调,最终效果如图: 实现效果: 点击右边input框会自动切换,如果输入的值与字不同,则清空换一串随机数 HTML <input type="text" placeholder="请输入验证码" class="yanzhengma_input" @blur="checkLpicma" v-model="picLyanzhengma"

随机推荐