亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue驗(yàn)證碼(identify)插件使用方法詳解

 更新時(shí)間:2022年04月22日 16:43:56   作者:莫逸雪  
這篇文章主要為大家詳細(xì)介紹了vue驗(yàn)證碼插件使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

identify是一款使用使用canvas來(lái)生成圖形驗(yàn)證碼的vue插件。

代碼:

identify.vue組件(主要用于定義參數(shù)和方法)

<template>
? <div class="s-canvas">
? ? <canvas id="s-canvas" :width="contentWidth" :height="contentHeight"></canvas>
? </div>
</template>
<script>
? export default{
? ? name: 'SIdentify',
? ? props: {
? ? ? identifyCode: {
? ? ? ? type: String,
? ? ? ? default: '1234'
? ? ? },
? ? ? fontSizeMin: {
? ? ? ? type: Number,
? ? ? ? default: 16
? ? ? },
? ? ? fontSizeMax: {
? ? ? ? type: Number,
? ? ? ? default: 40
? ? ? },
? ? ? backgroundColorMin: {
? ? ? ? type: Number,
? ? ? ? default: 180
? ? ? },
? ? ? backgroundColorMax: {
? ? ? ? type: Number,
? ? ? ? default: 240
? ? ? },
? ? ? colorMin: {
? ? ? ? type: Number,
? ? ? ? default: 50
? ? ? },
? ? ? colorMax: {
? ? ? ? type: Number,
? ? ? ? default: 160
? ? ? },
? ? ? lineColorMin: {
? ? ? ? type: Number,
? ? ? ? default: 40
? ? ? },
? ? ? lineColorMax: {
? ? ? ? type: Number,
? ? ? ? default: 180
? ? ? },
? ? ? dotColorMin: {
? ? ? ? type: Number,
? ? ? ? default: 0
? ? ? },
? ? ? dotColorMax: {
? ? ? ? type: Number,
? ? ? ? default: 255
? ? ? },
? ? ? contentWidth: {
? ? ? ? type: Number,
? ? ? ? default: 112
? ? ? },
? ? ? contentHeight: {
? ? ? ? type: Number,
? ? ? ? default: 38
? ? ? }
? ? },
? ? methods: {
? ? ? // 生成一個(gè)隨機(jī)數(shù)
? ? ? randomNum (min, max) {
? ? ? ? return Math.floor(Math.random() * (max - min) + min)
? ? ? },
? ? ? // 生成一個(gè)隨機(jī)的顏色
? ? ? randomColor (min, max) {
? ? ? ? let r = this.randomNum(min, max)
? ? ? ? let g = this.randomNum(min, max)
? ? ? ? let b = this.randomNum(min, max)
? ? ? ? return 'rgb(' + r + ',' + g + ',' + b + ')'
? ? ? },
? ? ? drawPic () {
? ? ? ? let canvas = document.getElementById('s-canvas')
? ? ? ? let ctx = canvas.getContext('2d')
? ? ? ? ctx.textBaseline = 'bottom'
? ? ? ? // 繪制背景
? ? ? ? ctx.fillStyle = this.randomColor(this.backgroundColorMin, this.backgroundColorMax)
? ? ? ? ctx.fillRect(0, 0, this.contentWidth, this.contentHeight)
? ? ? ? // 繪制文字
? ? ? ? for (let i = 0; i < this.identifyCode.length; i++) {
? ? ? ? ? this.drawText(ctx, this.identifyCode[i], i)
? ? ? ? }
? ? ? ? this.drawLine(ctx)
? ? ? ? this.drawDot(ctx)
? ? ? },
? ? ? drawText (ctx, txt, i) {
? ? ? ? ctx.fillStyle = this.randomColor(this.colorMin, this.colorMax)
? ? ? ? ctx.font = this.randomNum(this.fontSizeMin, this.fontSizeMax) + 'px SimHei'
? ? ? ? let x = (i + 1) * (this.contentWidth / (this.identifyCode.length + 1))
? ? ? ? let y = this.randomNum(this.fontSizeMax, this.contentHeight - 5)
? ? ? ? var deg = this.randomNum(-45, 45)
? ? ? ? // 修改坐標(biāo)原點(diǎn)和旋轉(zhuǎn)角度
? ? ? ? ctx.translate(x, y)
? ? ? ? ctx.rotate(deg * Math.PI / 180)
? ? ? ? ctx.fillText(txt, 0, 0)
? ? ? ? // 恢復(fù)坐標(biāo)原點(diǎn)和旋轉(zhuǎn)角度
? ? ? ? ctx.rotate(-deg * Math.PI / 180)
? ? ? ? ctx.translate(-x, -y)
? ? ? },
? ? ? drawLine (ctx) {
? ? ? ? // 繪制干擾線
? ? ? ? for (let i = 0; i < 8; i++) {
? ? ? ? ? ctx.strokeStyle = this.randomColor(this.lineColorMin, this.lineColorMax)
? ? ? ? ? ctx.beginPath()
? ? ? ? ? ctx.moveTo(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight))
? ? ? ? ? ctx.lineTo(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight))
? ? ? ? ? ctx.stroke()
? ? ? ? }
? ? ? },
? ? ? drawDot (ctx) {
? ? ? ? // 繪制干擾點(diǎn)
? ? ? ? for (let i = 0; i < 100; i++) {
? ? ? ? ? ctx.fillStyle = this.randomColor(0, 255)
? ? ? ? ? ctx.beginPath()
? ? ? ? ? ctx.arc(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight), 1, 0, 2 * Math.PI)
? ? ? ? ? ctx.fill()
? ? ? ? }
? ? ? }
? ? },
? ? watch: {
? ? ? identifyCode () {
? ? ? ? this.drawPic()
? ? ? }
? ? },
? ? mounted () {
? ? ? this.drawPic()
? ? }
? }
</script>

在 main.js進(jìn)行引入(注意路徑的地址):

import SIdentify from './components/page/identify'
Vue.component('s-identify', SIdentify)

codetest.vue(在頁(yè)面進(jìn)行使用)

<template>
? ? <div class="code" @click="refreshCode">
? ? <s-identify :identifyCode="identifyCode"></s-identify>
? </div>
</template>

<script>
export default {
? name: "codetest",
? data() {
? ? return {
? ? ? identifyCodes: "1234567890",
? ? ? identifyCode: ""
? ? };
? },
? mounted() {
? ? this.identifyCode = "";
? ? this.makeCode(this.identifyCodes, 4);
? },
? methods: {
? ? randomNum(min, max) {
? ? ? return Math.floor(Math.random() * (max - min) + min);
? ? },
? ? refreshCode() {
? ? ? this.identifyCode = "";
? ? ? this.makeCode(this.identifyCodes, 4);
? ? },
? ? makeCode(o, l) {
? ? ? for (let i = 0; i < l; i++) {
? ? ? ? this.identifyCode += this.identifyCodes[
? ? ? ? ? this.randomNum(0, this.identifyCodes.length)
? ? ? ? ];
? ? ? }
? ? ? console.log(this.identifyCode);
? ? }
? }
};
</script>

<style>
.code {
? margin: 400px auto;
? width: 114px;
? height: 40px;
? border: 1px solid red;
}
</style>

效果圖:

參數(shù)配置表:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue項(xiàng)目本地開(kāi)發(fā)完成后部署到服務(wù)器后報(bào)404錯(cuò)誤解決方案

    vue項(xiàng)目本地開(kāi)發(fā)完成后部署到服務(wù)器后報(bào)404錯(cuò)誤解決方案

    很多時(shí)候我們發(fā)現(xiàn)辛辛苦苦寫的VueJs應(yīng)用經(jīng)過(guò)打包后在自己本地搭建的服務(wù)器上測(cè)試沒(méi)有什么問(wèn)題,但真正放在服務(wù)器上后會(huì)發(fā)現(xiàn)或多或少的問(wèn)題,這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目本地開(kāi)發(fā)完成后部署到服務(wù)器后報(bào)404錯(cuò)誤的解決方案,需要的朋友可以參考下
    2024-01-01
  • Vue通過(guò)ref獲取dom元素屬性的方法

    Vue通過(guò)ref獲取dom元素屬性的方法

    這篇文章主要介紹了Vue通過(guò)ref獲取dom元素屬性的方法,文中有詳細(xì)的方法介紹,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • Vue Element前端應(yīng)用開(kāi)發(fā)之開(kāi)發(fā)環(huán)境的準(zhǔn)備工作

    Vue Element前端應(yīng)用開(kāi)發(fā)之開(kāi)發(fā)環(huán)境的準(zhǔn)備工作

    這篇文章主要介紹了Vue Element前端應(yīng)用開(kāi)發(fā)之開(kāi)發(fā)環(huán)境的準(zhǔn)備工作,對(duì)Vue感興趣的同學(xué),可以來(lái)學(xué)習(xí)一下
    2021-05-05
  • 結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)

    結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)

    下面小編就為大家?guī)?lái)一篇結(jié)合mint-ui移動(dòng)端下拉加載實(shí)踐方法總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 使用Vite+Vue3+TypeScript?搭建開(kāi)發(fā)腳手架的詳細(xì)過(guò)程

    使用Vite+Vue3+TypeScript?搭建開(kāi)發(fā)腳手架的詳細(xì)過(guò)程

    這篇文章主要介紹了Vite+Vue3+TypeScript?搭建開(kāi)發(fā)腳手架的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • 解決vue使用vant輪播組件swipe + flex時(shí)文字抖動(dòng)問(wèn)題

    解決vue使用vant輪播組件swipe + flex時(shí)文字抖動(dòng)問(wèn)題

    這篇文章主要介紹了解決vue使用vant輪播組件swipe + flex時(shí)文字抖動(dòng)問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-01-01
  • VUE實(shí)現(xiàn)自動(dòng)滾動(dòng)簡(jiǎn)單示例

    VUE實(shí)現(xiàn)自動(dòng)滾動(dòng)簡(jiǎn)單示例

    這篇文章主要給大家介紹了關(guān)于VUE實(shí)現(xiàn)自動(dòng)滾動(dòng)的相關(guān)資料,現(xiàn)在很多數(shù)據(jù)展示大屏都會(huì)有很多的自動(dòng)滾動(dòng)的列表,文中通過(guò)代碼實(shí)例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 最新評(píng)論