Vue implementiert QR-Code-Scanfunktion (mit Stil)

Vue implementiert QR-Code-Scanfunktion (mit Stil)

brauchen:
Verwenden Sie Vue, um das Scannen von QR-Codes zu realisieren.

Plugins:
QR-Code-Leser;

Plugin herunterladen

npm installieren --save vue-qrcode-reader

Beachten:
Zum Scannen des Codes kann die Kamera nur über das https-Protokoll aufgerufen werden.
Sie können devServer in vue.config.js konfigurieren: {https: true}
Oder lesen Sie den vorherigen Artikel, um das Nuxt-Framework auf dem Frontend zu verwenden, den lokalen https-Zugriff zu konfigurieren und lokale Zertifikate zu konfigurieren

Bildbeschreibung hier einfügen

<Vorlage>
  <div>
    <p class="error">{{ Fehler }}</p>
    <!--Fehlermeldung-->

    <p Klasse="Dekodierungsergebnis">
      Scan-Ergebnisse:
      {{ Ergebnis }}
    </p>
    <!--Scan-Ergebnisse-->

    <qrcode-stream @decode="beimDecoden" @init="beimInit" style="Höhe: 100vh;">
      <div>
        <div Klasse="QR-Scanner">
          <div Klasse="Box">
            <div Klasse="Zeile"></div>
            <div Klasse="Winkel"></div>
          </div>
        </div>
      </div>
    </qrcode-stream>
  </div>
</Vorlage>

<Skript>
// Laden Sie das Plugin herunter // cnpm install --save vue-qrcode-reader

// Importieren importiere { QrcodeStream } von 'vue-qrcode-reader'

Standard exportieren {
  //Komponenten registrieren: { QrcodeStream },

  Daten() {
    zurückkehren {
      result: '', // Scan-Ergebnisinformationen error: '' // Fehlermeldung }
  },

  Methoden: {
    onDecode(Ergebnis) {
      Alarm(Ergebnis)
      this.result = Ergebnis
    },

    asynchron beiInit(Versprechen) {
      versuchen {
        warten Versprechen
      } Fehler abfangen {
        if (error.name === 'Nicht zulässiger Fehler') {
          this.error = „FEHLER: Sie müssen den Kamerazugriff gewähren“
        } sonst wenn (Fehler.name === 'Nicht gefundener Fehler') {
          this.error = „FEHLER: Auf diesem Gerät ist keine Kamera vorhanden“
        } sonst wenn (Fehler.name === 'Nicht unterstützter Fehler') {
          this.error = 'FEHLER: Sicherheitskontext erforderlich (HTTPS, localhost)'
        } sonst wenn (Fehler.name === 'Nicht lesbarer Fehler') {
          this.error = 'FEHLER: Die Kamera ist belegt'
        } sonst wenn (Fehler.name === 'ÜberbeanspruchterFehler') {
          this.error = „FEHLER: Die Kamerainstallation ist ungeeignet“
        } sonst wenn (Fehler.name === 'StreamApiNotSupportedError') {
          this.error = „FEHLER: Dieser Browser unterstützt die Streaming-API nicht“
        }
      }
    }
  }
}
</Skript>

<Stilbereich>
.Fehler {
  Schriftstärke: fett;
  Farbe: rot;
}
</Stil>

<Stilbereich>
    /* * {
      Rand: 0;
      Polsterung: 0;
    }
    Körper {
      Höhe: 700px;
      Rand: 0;
    } */

    .qr-scanner {
      Hintergrundbild:
        linearer Gradient (0 Grad,
          transparent 24%,
          rgba(32, 255, 77, 0.1) 25%,
          rgba(32, 255, 77, 0.1) 26%,
          transparent 27%,
          transparent 74%,
          rgba(32, 255, 77, 0.1) 75%,
          rgba(32, 255, 77, 0,1) 76%,
          transparent 77%,
          transparent),
        linearer Gradient (90 Grad,
          transparent 24%,
          rgba(32, 255, 77, 0.1) 25%,
          rgba(32, 255, 77, 0.1) 26%,
          transparent 27%,
          transparent 74%,
          rgba(32, 255, 77, 0.1) 75%,
          rgba(32, 255, 77, 0,1) 76%,
          transparent 77%,
          transparent);
      Hintergrundgröße: 3rem 3rem;
      Hintergrundposition: -1rem -1rem;
      Breite: 100 %;
      /* Höhe: 100 %; */
      Höhe: 100vh;
      Position: relativ;
      Hintergrundfarbe: #1110;

      /* Hintergrundfarbe: #111; */
    }

    .qr-scanner .box {
      Breite: 213px;
      Höhe: 213px;
      Position: absolut;
      links: 50%;
      oben: 50 %;
      transformieren: übersetzen(-50 %, -50 %);
      Überlauf: versteckt;
      Rand: 0,1rem durchgezogen rgba(0, 255, 51, 0,2);
      /* Hintergrund: URL('http://resource.beige.world/imgs/gongconghao.png') keine Wiederholung Mitte Mitte; */
    }

    .qr-scanner .line {
      Höhe: berechnet (100 % – 2 Pixel);
      Breite: 100 %;
      Hintergrund: linearer Farbverlauf (180 Grad, RGBA (0, 255, 51, 0) 43 %, #00ff33 211 %);
      Rahmen unten: 3px durchgezogen #00ff33;
      transformieren: verschiebeY(-100%);
      Animation: Radarstrahl, 2 s, unendlich, abwechselnd;
      Animations-Timing-Funktion: kubische Bézierkurve (0,53, 0, 0,43, 0,99);
      Animationsverzögerung: 1,4 s;
    }

    .qr-scanner .box:nach,
    .qr-scanner .box:vorher,
    .qr-scanner .angle:nach,
    .qr-scanner .angle:vor {
      Inhalt: '';
      Anzeige: Block;
      Position: absolut;
      Breite: 3vw;
      Höhe: 3vw;

      Rand: 0,2rem durchgehend transparent;
    }

    .qr-scanner .box:nach,
    .qr-scanner .box:vor {
      oben: 0;
      Rahmenfarbe oben: #00ff33;
    }

    .qr-scanner .angle:nach,
    .qr-scanner .angle:vor {
      unten: 0;
      Farbe des unteren Rahmens: #00ff33;
    }

    .qr-scanner .box:vorher,
    .qr-scanner .angle:vor {
      links: 0;
      Rahmenfarbe links: #00ff33;
    }

    .qr-scanner .box:nach,
    .qr-scanner .angle:nach {
      rechts: 0;
      Rahmenfarbe rechts: #00ff33;
    }

    @keyframes Radarstrahl {
      0% {
        transformieren: verschiebeY(-100%);
      }

      100 % {
        transformieren: übersetzenY(0);
      }
    }
  </Stil>

OK, implementieren wir die Code-Scan-Funktion in einem Code-Vue-Projekt

Projektadresse: https://github.com/wkl007/vue-scan-demo.git
Das Projekt ist hauptsächlich eine Code-Scan-Funktion. Der Kerncode ist

 <div Klasse="scan">
    <div id="bcid">
      <div Stil="Höhe:40%"></div>
      <p class="tip">...Wird geladen...</p>
    </div>
    <Fußzeile>
      <button @click="startRecognize">1. Erstellen Sie ein Steuerelement</button>
      <button @click="startScan">2. Scannen starten</button>
      <button @click="cancelScan">3. Scan beenden</button>

      <button @click="closeScan">4. Schließen Sie das Steuerelement</button>
    </Fußzeile>
  </div>
</Vorlage>

<Skripttyp = "Text/ecmascript-6">
  let scan = null

  Standard exportieren {
    Daten () {
      zurückkehren {
        Code-URL: '',
      }
    },
    Methoden: {
      //Erstellen Sie ein Scan-Steuerelement startRecognize () {
        lass das = dies
        wenn (!window.plus) return
        scan = neuer plus.barcode.Barcode('bcid')
        scan.onmarked = aktiviert

        Funktion onmarked (Typ, Ergebnis, Datei) {
          Schalter (Typ) {
            Fall plus.Barcode.QR:
              Typ = "QR"
              brechen
            Etui zzgl.Barcode.EAN13:
              Typ = "EAN13"
              brechen
            Etui zzgl.Barcode.EAN8:
              Typ = "EAN8"
              brechen
            Standard:
              Typ = 'Andere' + Typ
              brechen
          }
          Ergebnis = Ergebnis.Ersetzen(/\n/g, '')
          that.codeUrl = Ergebnis
          Alarm(Ergebnis)
          dass.closeScan()

        }
      },
      // Scannen starten startScan () {
        wenn (!window.plus) return
        scannen.starten()
      },
      // Scan schließen cancelScan () {
        wenn (!window.plus) return
        scannen.abbrechen()
      },
      // Schließen Sie die Barcode-Erkennungssteuerung closeScan () {
        wenn (!window.plus) return
        scannen.schließen()
      },
    }
  }
</Skript>
<style lang="less">
  .scan {
    Höhe: 100%;

    #bcid {
      Breite: 100 %;
      Position: absolut;
      links: 0;
      rechts: 0;
      oben: 0;
      unten: 3rem;
      Textausrichtung: zentriert;
      Farbe: #fff;
      Hintergrund: #ccc;
    }

    Fußzeile {
      Position: absolut;
      links: 0;
      unten: 1rem;
      Höhe: 2rem;
      Zeilenhöhe: 2rem;
      Z-Index: 2;
    }
  }
</Stil>

Dies ist das Ende dieses Artikels über die Implementierung der Code-Scan-Funktion mit Stilen in Vue. Weitere relevante Inhalte zur Vue-Code-Scan-Funktion finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Implementierung der QR-Code-Scanfunktion über Vue
  • Vue - Beispiel für die Front-End-Generierung eines QR-Codes
  • So generieren Sie dynamisch QR-Codes in Vue
  • Vue WeChat scannt QR-Codes, aber Apple kann nur Bilder speichern (Lösung)
  • So verwenden Sie Canvas in Vue, um die Synthese von QR-Code und Bildposter zu realisieren
  • Detailliertes Verständnis der Vue-Methode zum Generieren von QR-Codes mit vue-qr

<<:  Verstehen Sie kurz die beiden gängigen Methoden zum Erstellen von Dateien im Linux-Terminal

>>:  Befehlsliste des Baota Linux-Panels

Artikel empfehlen

Spezifische Verwendung des Autoindex-Moduls in der Nginx-HTTP-Modulreihe

Die Hauptfunktion des Browsermoduls besteht darin...

MySQL-Reihe: Redo-Log, Undo-Log und Binlog – ausführliche Erklärung

Durchführung von Transaktionen Das Redo-Protokoll...

Beispiel für die Validierung eines JavaScript-Formulars

HTML-Formulare werden häufig verwendet, um Benutz...

Beispielcode für Nginx zur Erreichung dynamischer und statischer Trennung

1. Einfache Konfiguration der dynamischen und sta...

Installations- und Verwendungsschritte für vue-amap

Ich habe zuvor die Verwendung des asynchronen Lad...

Grafisches Tutorial zur Installation und Konfiguration von MySQL (CentOS7)

1. Systemumgebung [root@localhost-Startseite]# ca...

Zusammenfassung ungewöhnlicher Operatoren und Operatoren in js

Zusammenfassung gängiger Operatoren und Operatore...

Ändern Sie die Startzeit von Grub in Ubuntu

Die Online-Suche zum Ändern der Grub-Startzeit be...

Löschen von zwei Bildern mit derselben ID im Docker

Als ich heute einen Docker-Container erstellt hab...