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
Inhaltsverzeichnis 1. Offline-Installation 2. Onl...
1. Einleitung Unsere realen Server sollten nicht ...
Inhaltsverzeichnis 1. Bedingte Zugriffsattribute ...
Inhaltsverzeichnis 1. Umweltvorbereitung 1.1 Betr...
Das Wesen einer flachen Website-Struktur liegt in...
Inhaltsverzeichnis Containerhierarchie Der Prozes...
<br />Verwandte Artikel: 9 praktische Vorsch...
Jetzt ist .net Core plattformübergreifend und jed...
Dieser Artikel beschreibt anhand eines Beispiels,...
Früher hatte fast jede Website eine Sitemap-Seite...
Teilen Sie einen Echtzeituhreffekt, der mit nativ...
Detaillierte Erklärung des Java-Aufrufs von ffmpe...
Ziehen Sie das Bild Docker-Pull-Saison/FastDFS:1....
Annahme: Die gespeicherte Prozedur wird täglich v...
1. Einführung in mysqlbackup mysqlbackup ist die ...