In diesem Artikelbeispiel wird der spezifische Code von Vue zur Implementierung der grafischen Verifizierungscode-Anmeldung zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt 1. Rendern 2. Erstellen Sie unter Komponenten eine neue Datei identify.vue mit folgendem Inhalt: <Vorlage> <div Klasse="s-canvas"> <canvas id="s-canvas" :width="Inhaltsbreite" :height="Inhaltshöhe"></canvas> </div> </Vorlage> <Skript> Standard exportieren { Name: 'SIdentify', Requisiten: { Identifizierungscode: Typ: Zeichenfolge, Standard: „1234“ }, SchriftgrößeMin: { Typ: Nummer, Standard: 28 }, SchriftgrößeMax: { Typ: Nummer, Standard: 40 }, HintergrundFarbeMin: { Typ: Nummer, Standard: 180 }, HintergrundFarbeMax: { Typ: Nummer, Standard: 240 }, FarbeMin: Typ: Nummer, Standard: 50 }, FarbeMax: { Typ: Nummer, Standard: 160 }, LinienfarbeMin: { Typ: Nummer, Standard: 40 }, ZeilenfarbeMax: { Typ: Nummer, Standard: 180 }, PunktFarbeMin: { Typ: Nummer, Standard: 0 }, PunktFarbeMax: { Typ: Nummer, Standard: 255 }, Inhaltsbreite: { Typ: Nummer, Standard: 112 }, Inhaltshöhe: { Typ: Nummer, Standard: 40 } }, Methoden: { // Erzeuge eine Zufallszahl randomNum (min, max) { gibt Math.floor(Math.random() * (max - min) + min) zurück }, // Erzeuge eine zufällige Farbe randomColor (min, max) { var r = diese.randomNum(min, max) var g = diese.randomNum(min, max) var b = diese.randomNum(min, max) gibt 'rgb(' + r + ',' + g + ',' + b + ')' zurück }, zeichneBild() { var Leinwand = document.getElementById('s-canvas') var ctx = canvas.getContext('2d') ctx.textBaseline = "unten" // Zeichne den Hintergrund ctx.fillStyle = this.randomColor( dies.backgroundColorMin, dies.backgroundColorMax ) ctx.fillRect(0, 0, diese.Inhaltsbreite, diese.Inhaltshöhe) // Text zeichnen für (let i = 0; i < this.identifyCode.length; i++) { dies.drawText(ctx, dies.identifyCode[i], i) } dies.drawLine(ctx) dies.drawDot(ctx) }, zeichneText (ctx, txt, i) { ctx.fillStyle = diese.randomColor(diese.colorMin, diese.colorMax) ctx.Schriftart = diese.randomNum(diese.fontSizeMin, diese.fontSizeMax) + 'px SimHei' var x = (i + 1) * (diese.Inhaltsbreite / (diese.IdentifyCode.Länge + 1)) var y = diese.randomNum(diese.fontSizeMax, diese.contentHeight - 5) var deg = diese.randomNum(-30, 30) // Koordinatenursprung und Drehwinkel ändern ctx.translate(x, y) ctx.rotate(Grad * Math.PI / 270) ctx.fillText(txt, 0, 0) // Koordinatenursprung und Drehwinkel wiederherstellen ctx.rotate(-deg * Math.PI / 270) ctx.translate(-x, -y) }, zeichneLinie (ctx) { // Interferenzlinien zeichnen für (let i = 0; i < 2; i++) { ctx.strokeStyle = diese.randomColor( diese.lineColorMin, diese.lineColorMax ) ctx.beginPath() ctx.moveTo( diese.randomNum(0, diese.contentWidth), diese.randomNum(0, diese.contentHeight) ) ctx.lineTo( diese.randomNum(0, diese.contentWidth), diese.randomNum(0, diese.contentHeight) ) ctx.stroke() } }, Punkt zeichnen (ctx) { // Interferenzpunkte zeichnen für (let i = 0; i < 20; i++) { ctx.fillStyle = diese.randomColor(0, 255) ctx.beginPath() ctx.arc( diese.randomNum(0, diese.contentWidth), diese.randomNum(0, diese.contentHeight), 1, 0, 2 * Math.PI ) ctx.fill() } } }, betrachten: identifizierungscode () { dieses.drawPic() } }, montiert () { dieses.drawPic() } } </Skript> <style lang='scss' scoped> .s-Leinwand { Höhe: 38px; } .s-canvas Leinwand{ Rand oben: 1px; Rand links: 8px; } </Stil> 3. Seiteneinführung <Skript> importiere SIdentify aus '../../components/identify' Standard exportieren { Komponenten: { SIdentify } } Daten() { // Verifizierungscode, benutzerdefinierte Verifizierungsregeln, const validateVerifycode = (rule, value, callback) => { const newVal = Wert.toLowerCase() const identifyStr = this.identifyCode.toLowerCase() wenn (neuerWert === '') { callback(new Error('Bitte geben Sie den Bestätigungscode ein')) } sonst wenn (newVal !== identifyStr) { console.log('validateVerifycode:', Wert) callback(new Error('Der Bestätigungscode ist falsch!')) } anders { Rückruf() } } zurückkehren { Identifizierungscodes: '3456789ABCDEFGHGKMNPQRSTUVWXY', Identifizierungscode: '', RegelForm: { Benutzername: '', Passwort: '', Prüfcode: '' }, Regeln: Prüfcode: { erforderlich: true, Auslöser: „blur“, Validator: validateVerifycode } ] } } } </Skript> 4.html <el-form-item prop="Verifizierungscode"> <div Stil="Anzeige:flex"> <el-Eingabe v-Modell="Regelformular.Verifycode" Platzhalter="Bitte geben Sie den Bestätigungscode ein" @keyup.enter.native="login('ruleForm')" ></el-Eingabe> <span @click="Code aktualisieren" ><s-identify :identifyCode="identifyCode"></s-identify ></span> </div> </el-form-item> 5. montiert montiert() { //Initialisierung des Bestätigungscodes this.identifyCode = '' dies.makeCode(diese.identifyCodes, 4) } 6. Methoden Methoden: { // Zufallszahl generieren randomNum(min, max) { gibt Math.floor(Math.random() * (max - min) + min) zurück }, // Bestätigungscode wechseln refreshCode() { this.identifyCode = '' dies.makeCode(diese.identifyCodes, 4) }, // Einen vierstelligen zufälligen Verifizierungscode generieren makeCode(o, l) { für (sei i = 0; i < l; i++) { dieser.identifizierenCode += dieser.identifizierenCodes[ diese.randomNum(0, diese.identifyCodes.length) ] } } } Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So richten Sie Referer in Nginx ein, um Bilddiebstahl zu verhindern
Ich denke, dies ist ein Problem, auf das viele Leu...
Die Rolle der A-Tag-Pseudoklasse: ":link"...
Ich bin in letzter Zeit beim Erlernen von Docker ...
Dieser Artikel stellt hauptsächlich den Installati...
Vorwort Während des Vorstellungsgesprächs erwähne...
Inhaltsverzeichnis brauchen Kernidee Zwei Möglich...
Vorwort Bei der Entwicklung eines Miniprogramms b...
Jenkins ist ein Open-Source-Softwareprojekt. Es h...
Awk ist eine Anwendung zur Verarbeitung von Textd...
Inhaltsverzeichnis 1. WeChat Pay öffnen 1.1 Partn...
1. Schnittstelle für die Anforderung einer Antwor...
Das Boxmodell gibt die Breite und Höhe sowie die ...
Überblick Ich habe vor Kurzem begonnen, mir Wisse...
Seit ich den Mac zurückgegeben habe, liegt mein u...
Vorwort Kürzlich bin ich beim Upgrade von MySQL 5...