Eine einfache Möglichkeit, die Drag-Screenshot-Funktion von Vue zu implementieren

Eine einfache Möglichkeit, die Drag-Screenshot-Funktion von Vue zu implementieren

Ziehen Sie die Maus, um einen Screenshot der Seite zu erstellen (Sie können den Screenshot auch in einen angegebenen Bereich ziehen)

1. Installieren Sie html2canvas und vue-cropper

npm i html2canvas --save //Wird verwendet, um den angegebenen Bereich in ein Bild umzuwandeln npm i vue-cropper -S //Bild zuschneiden

2. Registrieren Sie die Vue-Cropper-Komponente in main.js

Importiere VueCropper von „vue-cropper“
Vue.use(VueCropper)

3. Einführung von html2canvas in die Seite

  importiere html2canvas von "html2canvas"
  Standard exportieren{
  }

4. Code-Zerlegung

1. Konvertieren Sie den angegebenen Bereich in ein Bild

dies.$nextTick(()=>{
   html2canvas(Dokument.Body,{}).dann(Canvas => {    
     let dataURL = canvas.toDataURL("bild/png");
     this.uploadImg = Daten-URL
     dies.laden = wahr
   });
 })

Hier wird die gesamte Body-Seite in ein Bild umgewandelt, um Daten im Base64-Format zu erhalten, und andere Bereiche erhalten direkt Klasse oder ID

2. Ziehen Sie das generierte Bild, um einen Screenshot zu machen

<Vorlage>
	<div Klasse="Pop_Alarm" v-if="Anzeigen">
	   <vueCropper
	      @mouseenter.native="Eingeben"
	      @mouseleave.native="verlassen"
	      ref="Beschneider"
	      :img="Bild hochladen"
	      :Ausgabegröße="Option.Größe"
	      :Ausgabetyp="Option.Ausgabetyp"
	      :info="wahr"
	      :full="Option.full"
	      :kannVerschieben="Option.kannVerschieben"
	      :kannBox verschieben="Option.kannBox verschieben"
	      :original="Option.original"
	      :autoCrop="Option.autoCrop"
	      :fest="Option.fest"
	      :festeNummer="Option.festeNummer"
	      :centerBox="Option.centerBox"
	      :infoTrue="option.infoTrue"
	      :fixedBox="Option.fixedBox"
	      Stil="Hintergrundbild:keines"
	    ></vueCropper>
	    <div Klasse="btn_box">
	    	<div @click="save">Screenshot bestätigen</div>
	   	    <div @click="close">Abbrechen</div>
	    </div>
	 </div>
 </Vorlage>
<Skript>
 Standard exportieren{
   Daten(){
       Option: {
          info: true, // Größeninformationen zum ZuschneidefeldoutputSize: 0.8, // Qualität des zugeschnittenen BildesoutputType: "jpeg", // Format des zugeschnittenen BildescanScale: false, // ob das Bild eine Skalierung mit dem Scrollrad zulässtautoCrop: false, // ob standardmäßig ein Screenshot-Feld generiert werden sollfixedBox: false, // feste Größe des Screenshot-Felds kann nicht geändert werdenfixed: false, // ob ein festes Seitenverhältnis des Screenshot-Felds aktiviert werden sollfixedNumber: [7, 5], // Seitenverhältnis des Screenshot-Feldsfull: true, // ob der Screenshot im Original-Seitenverhältnis ausgegeben werden sollcanMove: false, // kann das Originalbild verschoben werdencanMoveBox: true, // ob das Screenshot-Feld gezogen werden kannoriginal: false, // hochgeladenes Bild wird im Original-Seitenverhältnis gerendertcenterBox: false, // ob das Screenshot-Feld auf das Bild beschränkt istinfoTrue: true // true, um die tatsächliche Breite und Höhe des Ausgabebilds anzuzeigenfalse, um die Breite und Höhe des Screenshot-Felds anzuzeigen},
        Bild hochladen:"",
        anzeigen:false
   },
   Methoden:{
     eingeben() {
       wenn (this.uploadImg == "") {
         zurückkehren;
       }
       this.$refs.cropper.startCrop(); //Mit dem Zuschneiden beginnen},
     verlassen() {
       this.$refs.cropper.stopCrop();//Zuschneiden beenden},
     save() { //Screenshot bestätigen this.$refs.cropper.getCropData((data) => { //Daten des Screenshots im Base64-Format abrufen console.log(data)
          this.show = falsch
        })
        // this.$refs.cropper.getCropBlob(data => { //Blob-Formatdaten des Screenshots abrufen// this.cutImg = data;
        // });
      },
      close(){ //Abbrechen this.show = false
      }
   }
 }
 </Skript>

5. Alle Codes

<Vorlage>
   <div>
     <div @click="tailoring">Schnitt</div>
	<!--Schreiben Sie weiterhin den restlichen Inhalt der Seite. Pop_alert kann zur Verwendung in eine Komponente gekapselt werden-->
	
     <div Klasse="Pop_Alarm" v-if="Anzeigen">
	   <vueCropper
	      @mouseenter.native="Eingeben"
	      @mouseleave.native="verlassen"
	      ref="Beschneider"
	      :img="Bild hochladen"
	      :Ausgabegröße="Option.Größe"
	      :Ausgabetyp="Option.Ausgabetyp"
	      :info="wahr"
	      :full="Option.full"
	      :kannVerschieben="Option.kannVerschieben"
	      :kannBox verschieben="Option.kannBox verschieben"
	      :original="Option.original"
	      :autoCrop="Option.autoCrop"
	      :fest="Option.fest"
	      :festeNummer="Option.festeNummer"
	      :centerBox="Option.centerBox"
	      :infoTrue="option.infoTrue"
	      :fixedBox="Option.fixedBox"
	      Stil="Hintergrundbild:keines"
	    ></vueCropper>
	    <div Klasse="btn_box">
	    	<div @click="save">Screenshot bestätigen</div>
	   	    <div @click="close">Abbrechen</div>
	    </div>
	 </div>
   </div>
</Vorlage>
<Skript>
importiere html2canvas von "html2canvas"
 Standard exportieren{
  Daten(){
   zurückkehren {
     Option: {
          info: true, // Größeninformationen zum ZuschneidefeldoutputSize: 0.8, // Qualität des zugeschnittenen BildesoutputType: "jpeg", // Format des zugeschnittenen BildescanScale: false, // ob das Bild eine Skalierung mit dem Scrollrad zulässtautoCrop: false, // ob standardmäßig ein Screenshot-Feld generiert werden sollfixedBox: false, // feste Größe des Screenshot-Felds kann nicht geändert werdenfixed: false, // ob ein festes Seitenverhältnis des Screenshot-Felds aktiviert werden sollfixedNumber: [7, 5], // Seitenverhältnis des Screenshot-Feldsfull: true, // ob der Screenshot im Original-Seitenverhältnis ausgegeben werden sollcanMove: false, // kann das Originalbild verschoben werdencanMoveBox: true, // ob das Screenshot-Feld gezogen werden kannoriginal: false, // hochgeladenes Bild wird im Original-Seitenverhältnis gerendertcenterBox: false, // ob das Screenshot-Feld auf das Bild beschränkt istinfoTrue: true // true, um die tatsächliche Breite und Höhe des Ausgabebilds anzuzeigenfalse, um die Breite und Höhe des Screenshot-Felds anzuzeigen},
        Bild hochladen:"",
        anzeigen:false
   }
  },
  Methoden:{
    Schneidern(){ //Schneide dies.$nextTick(()=>{
           html2canvas(Dokument.Body,{}).dann(Canvas => {
             let dataURL = canvas.toDataURL("bild/png");
             this.uploadImg = Daten-URL
             dies.show = wahr
           });
       })
    },
    eingeben() {
       wenn (this.uploadImg == "") {
         zurückkehren;
       }
       this.$refs.cropper.startCrop(); //Mit dem Zuschneiden beginnen},
     verlassen() {
       this.$refs.cropper.stopCrop();//Zuschneiden beenden},
     save() { //Screenshot bestätigen this.$refs.cropper.getCropData((data) => { //Daten des Screenshots im Base64-Format abrufen console.log(data)
          this.show = falsch
        })
        // this.$refs.cropper.getCropBlob(data => { //Blob-Formatdaten des Screenshots abrufen// this.cutImg = data;
        // });
      },
      close(){ //Abbrechen this.show = false
      }
   }
 }
</Skript>
<Stil>
	.pop_alert{
      Breite: 100 %;
	  Höhe: 100%;
	  Position: absolut;
	  oben: 0;
	  links: 0;
	  Rand: 1px gestrichelt rot;
	  Hintergrundfarbe: #000000;
    }
    .btn_box{
        Position: absolut;
	    oben: 0;
	    Farbe: rot;
	    rechts: 0;
	    Schriftgröße: 30px;
	    Anzeige: Flex;
        Elemente ausrichten: zentrieren;
	    Z-Index: 6666;
    }
</Stil>

Rendern

Zusammenfassen

Dies ist das Ende dieses Artikels über die Implementierung der Vue Drag-Screenshot-Funktion. Weitere relevante Inhalte zur Vue Drag-Screenshot-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:
  • Drag-Effekt basierend auf Vue realisieren
  • Implementierung einer Drag & Drop-Funktion basierend auf Vue
  • Beispiel für die Implementierung eines Drag & Drop-Effekts mit Vue.js
  • Vue.js implementiert das zufällige Ziehen von Bildern
  • Vue implementiert Div Drag & Drop
  • Beispiel für eine benutzerdefinierte Drag-Funktion in Vue
  • Vue implementiert unregelmäßige Screenshots

<<:  Detaillierte Erläuterung des Problems der gemischten Verwendung von Limit- und Summenfunktionen in MySQL

>>:  Detaillierte Erklärung zur Verwendung des Linux-Befehls Traceroute

Artikel empfehlen

Grundlegende Verwendung der JS-Datumssteuerung My97DatePicker

My97DatePicker ist ein sehr flexibles und benutze...

Vue implementiert die Anzeige und Ausblendung der dreistufigen Navigation

In diesem Artikelbeispiel wird der spezifische Co...

JavaScript zum Wechseln zwischen mehreren Bildern

In diesem Artikel wird der spezifische JavaScript...

Erstellen Sie einen hochverfügbaren MySQL-Cluster mit Dual-VIP

Inhaltsverzeichnis 1. Projektbeschreibung: 2. Pro...

CSS3 realisiert den Animationseffekt der Lotusblüte

Schauen wir uns zunächst die Wirkung an: Dieser E...

So fügen Sie in Linux stapelweise Dateipräfixe hinzu

Sie müssen „gt_“ vor den Dateinamen aller TXT-Dat...

MySQL-Datenbank löscht doppelte Daten und behält nur eine Methodeninstanz bei

1. Problemeinführung Nehmen Sie ein Szenario an, ...

So erstellen Sie einen MySQL PXC-Cluster

Inhaltsverzeichnis 1. Einführung in PXC 1.1 Einfü...

MySQL-Datenbankoperationen (Erstellen, Auswählen, Löschen)

MySQL-Datenbank erstellen Nachdem wir uns beim My...