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

So zeigen Sie Bilder im TIF-Format im Browser an

Der Browser zeigt Bilder im TIF-Format an Code kop...

So erstellen, starten und stoppen Sie einen Docker-Container

1. Ein Container ist eine unabhängig laufende Anw...

js, um den Zahlungs-Countdown zu realisieren und zur Startseite zurückzukehren

Zahlungs-Countdown, um zur Startseite zurückzukeh...

Das WeChat-Applet realisiert den Neun-Quadrat-Rastereffekt

In diesem Artikel wird der spezifische Code für d...

Analyse und Lösung des a.getAttribute(href,2)-Problems in IE6/7

Kurzbeschreibung <br />In IE6 und 7 wird in...

Einige allgemeine Eigenschaften von CSS

CSS-Hintergrund: background:#00ffee; //Hintergrund...

Webdesign-Dimensionen und Regeln für die Werbegestaltung auf Webseiten

1. Unter 800 x 600 gibt es keine horizontale Bild...

HTML-Tutorial: Definitionsliste

<br />Originaltext: http://andymao.com/andy/...