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    

Artikel empfehlen

Theorie: Die zwei Jahre User Experience

<br />Es ist nicht länger als zwei Jahre her...

Linux-Tutorial zum Ersetzen von Zeichenfolgen mit dem Befehl sed

Um eine Zeichenfolge zu ersetzen, müssen wir das ...

JavaScript implementiert schnell Kalendereffekte

In diesem Artikelbeispiel wird der spezifische Ja...

Gängige Methoden und Probleme der Docker-Bereinigung

Wenn Sie Docker für die Entwicklung im großen Maß...

Beispielerklärung für langsame MySQL-Abfragen und -Protokolle

1. Einleitung Durch Aktivieren des Slow Query Log...

Implementierung der Nummernschild-Eingabefunktion im WeChat-Applet

Inhaltsverzeichnis Vorwort Hintergrund Große Verm...

Detaillierte Analyse von GUID-Anzeigeproblemen in Mongodb

Finden Sie das Problem Ich habe kürzlich den Spei...

Vue implementiert eine Countdown-Schaltfläche für den Bestätigungscode

In diesem Artikelbeispiel wird der spezifische Co...

Verwendung des if-Urteils in HTML

Während der Django-Webentwicklung wird beim Schre...

Sequenzimplementierungsmethode basierend auf MySQL

Das Team ersetzte den neuen Rahmen. Alle neuen Un...

Lösung für die Nichterreichbarkeit des Tencent Cloud Server Tomcat-Ports

Ich habe vor Kurzem einen Server mit Tencent Clou...

Erste Schritte mit CSS3-Animation in 10 Minuten

Einführung Mit Animation können Sie mithilfe von ...