婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當(dāng)前位置:首頁 >  站長 >  編程技術(shù) >  正文

    Vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能

     2020-12-30 17:01  來源: 腳本之家   我來投稿 撤稿糾錯(cuò)

      阿里云優(yōu)惠券 先領(lǐng)券再下單

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

    本文實(shí)例為大家分享了Vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能的具體代碼,供大家參考,具體內(nèi)容如下

    步驟1: 創(chuàng)建一個(gè)名為identify.vue的子組件

    <template>
    <div class="s-canvas">
    <canvas id="s-canvas" :width="contentWidth" :height="contentHeight"></canvas>
    </div>
    </template>
    <script>
    export default {
    name: 'SIdentify',
    props: {
    // 默認(rèn)注冊(cè)碼
    identifyCode: {
    type: String,
    default: "1234"
    },
    // 字體最小值
    fontSizeMin: {
    type: Number,
    default: 35
    },
    // 字體最大值
    fontSizeMax: {
    type: Number,
    default: 35
    },
    // 背景顏色色值最小值
    backgroundColorMin: {
    type: Number,
    default: 180
    },
    // 背景顏色色值最大值
    backgroundColorMax: {
    type: Number,
    default: 240
    },
    // 字體顏色色值最小值
    colorMin: {
    type: Number,
    default: 50
    },
    // 字體顏色色值最大值
    colorMax: {
    type: Number,
    default: 160
    },
    // 干擾線顏色色值最小值
    lineColorMin: {
    type: Number,
    default: 100
    },
    // 干擾線顏色色值最大值
    lineColorMax: {
    type: Number,
    default: 200
    },
    // 干擾點(diǎn)顏色色值最小值
    dotColorMin: {
    type: Number,
    default: 0
    },
    // 干擾點(diǎn)顏色色值最大值
    dotColorMax: {
    type: Number,
    default: 255
    },
    // 畫布寬度
    contentWidth: {
    type: Number,
    default: 120
    },
    // 畫布高度
    contentHeight: {
    type: Number,
    default: 40
    }
    },
    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) {
    // 隨機(jī)生產(chǎn)字體顏色
    ctx.fillStyle = this.randomColor(this.colorMin, this.colorMax)
    // 隨機(jī)生成字體大小
    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 < 5; 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 < 80; 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>

    步驟2 在子組件中進(jìn)行注冊(cè)和引用

    <script>
    import SIdentify from "./common/sIdentify.vue";
    export default {
    components: { SIdentify },
    }
    </script>

    步驟3 在主頁面中使用子組件

    1、template中:

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

    2、 data中:

    data() {
    return {
    identifyCode: "",
    identifyCodes: "",
    }
    },

    3、methods中:

    methods: {
    // 生成隨機(jī)數(shù)
    randomNum(min, max) {
    max = max + 1
    return Math.floor(Math.random() * (max - min) + min);
    },
    // 更新驗(yàn)證碼
    refreshCode() {
    this.identifyCode = "";
    this.makeCode(this.identifyCodes, 4);
    console.log('當(dāng)前驗(yàn)證碼==',this.identifyCode);
    },
    // 隨機(jī)生成驗(yàn)證碼字符串
    makeCode(data, len) {
    for (let i = 0; i < len; i++) {
    this.identifyCode += this.identifyCodes[this.randomNum(0, this.identifyCodes)]
    }
    },
    }

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

    來源:腳本之家

    鏈接:https://www.jb51.net/article/203106.htm

    申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

    相關(guān)標(biāo)簽
    vue.js

    相關(guān)文章

    • Vue 3自定義指令開發(fā)的相關(guān)總結(jié)

      這篇文章主要介紹了Vue3自定義指令開發(fā)的相關(guān)總結(jié),幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下

      標(biāo)簽:
      vue.js
    • vue集成一個(gè)支持圖片縮放拖拽的富文本編輯器

      文章主要介紹了vue集成一個(gè)支持圖片縮放拖拽的富文本編輯器,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下。

      標(biāo)簽:
      vue.js
    • vue自定義組件實(shí)現(xiàn)雙向綁定

      這篇文章主要為大家詳細(xì)介紹了vue自定義組件實(shí)現(xiàn)雙向綁定,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

      標(biāo)簽:
      vue.js
    • vue實(shí)現(xiàn)樹狀表格效果

      這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)樹狀表格效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

      標(biāo)簽:
      vue.js
    • vue添加自定義右鍵菜單的完整實(shí)例

      這篇文章主要給大家介紹了關(guān)于vue添加自定義右鍵菜單的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

      標(biāo)簽:
      vue.js

    熱門排行

    信息推薦