Vue integriert einen Rich-Text-Editor, der das Zoomen und Ziehen von Bildern unterstützt

Vue integriert einen Rich-Text-Editor, der das Zoomen und Ziehen von Bildern unterstützt

brauchen:

Den Geschäftsanforderungen entsprechend ist die Möglichkeit zum Hochladen von Bildern erforderlich. Die hochgeladenen Bilder müssen die gesamte Bildschirmbreite auf dem mobilen Endgerät einnehmen. Daher ist es erforderlich, die hochgeladenen Bilder proportional skalieren zu können und die Möglichkeit zu haben, die Bilder zu ziehen, zu skalieren und ihre Größe zu ändern. Nachdem Sie mehrere Rich-Text-Editoren von Drittanbietern ausprobiert haben, ist es schwierig, einen Editor zu finden, der Ihren Anforderungen perfekt entspricht. Nach vielen Versuchen habe ich mich schließlich für den Rich-Text-Editor wangEditor entschieden. Ursprünglich wurde der Rich-Text-Editor vue2Editor verwendet. vue2Editor selbst unterstützt kein Ziehen von Bildern, bietet jedoch eine konfigurierbare Methode zum Ziehen von Bildern. Zum Implementieren des Ziehens von Bildern muss Quill.js verwendet werden. Obwohl es den geschäftlichen Anforderungen entspricht, ist die Anzeigewirkung auf Mobilgeräten nicht optimal. Der Hauptzweck dieses Editors besteht darin, Rich Text hochzuladen, der auf dem mobilen Endgerät angezeigt werden muss. Um den idealen Effekt zu erzielen, muss der Bildprozentsatz geändert werden können. Wenn das Breitenattribut des img-Tags auf 100 % eingestellt ist, kann die Anforderung erfüllt werden. Die kürzlich veröffentlichte neue Version (vierte Ausgabe v4) von wangEditor kann die Anforderungen erfüllen und wurde schließlich für die eigentliche Entwicklung ausgewählt.

Effektbild:

Die Codebeispiele und zugehörigen Konfigurationen sind wie folgt:

Installieren Sie das Plugin

npm ich wangeditor --save
// oder
Garn hinzufügen Wangeditor

Editor-Konfiguration

<Vorlage>
	<div Klasse="w_editor">
		<!-- Rich-Text-Editor -->
		<div id="w_view"></div>
	</div>
</Vorlage>

<Skript>
// Rich-Text importieren importiere WE von „wangeditor“;
//Führen Sie das ElementUI-Nachrichtenmodul ein (für sofortige Informationen)
importiere { Nachricht } von "element-ui";

Standard exportieren {
	Name: "WEditor",
	Requisiten: {
		// Standardwert defaultText: { Typ: String, Standard: "" },
		// Rich-Text aktualisierter Wert richText: { Typ: String, Standard: "" }
	},
	Daten() {
		zurückkehren {
			//Editor-Instanz-Editor: null,
			// Rich-Text-Menüoptionskonfiguration menuItem: [
				"Kopf",
				"deutlich",
				"Schriftgröße",
				"Schriftname",
				"kursiv",
				"unterstreichen",
				"Einzug",
				"Zeilenhöhe",
				"Vorderfarbe",
				"Hintergrundfarbe",
				"Link",
				"Liste",
				"rechtfertigen",
				"Bild",
				"Video"
			]
		};
	},
	betrachten:
		// Auf Standardwerte warten defaultText(nv, ov) {
			wenn (nv != "") {
				dies.editor.txt.html(nv);
				dies.$emit("update:rich-text", nv);
			}
		}
	},
	montiert() {
		dies.initEditor();
	},
	Methoden: {
		// Initialisiere den Editor initEditor() {
			//Dom-Knoten des Editors abrufen const editor = new WE("#w_view");
			//Konfiguriere den Editor editor.config.showLinkImg = false; /* Funktion zum Einfügen von Netzwerkbildern ausblenden*/
			editor.config.onchangeTimeout = 400; /* Konfigurieren Sie die Zeitfrequenz für die Auslösung von „onchange“, der Standardwert beträgt 200 ms */
			editor.config.uploadImgMaxLength = 1; /* Begrenzen Sie die maximale Anzahl von Bildern, die gleichzeitig hochgeladen werden können*/
			// editor.config.showFullScreen = false; /* Konfigurieren, ob die Funktionsschaltfläche im Vollbildmodus angezeigt werden soll*/
			editor.config.menus = [...this.menuItem]; /* Benutzerdefiniertes Systemmenü */
			// editor.config.uploadImgMaxSize = 5 * 1024 * 1024 /* Bildgröße begrenzen */;
			editor.config.customAlert = err => {
				Nachricht.Fehler(err);
			};
			// Änderungen überwachen und Daten synchron aktualisieren editor.config.onchange = newHtml => {
				// Die Änderungen am Rich-Text-Wert der Komponente asynchron aktualisieren. this.$emit("update:rich-text", newHtml);
			};
			// Benutzerdefiniertes Upload-Bild editor.config.customUploadImg = (resultFiles, insertImgFn) => {
				/**
				 * resultFiles: Dateistream zum Hochladen von Bildern * insertImgFn: Bild in Rich Text einfügen * Das zurückgegebene Ergebnis ist die generierte URL-Adresse des Bildes * */
				// Diese Methode wurde von Fengzhuan für das Alibaba Cloud Image OSS Direct Transfer Plugin neu geschrieben.
				dies.$oss(resultFiles[0], resultFiles[0]["name"]).dann(url => {
					!!url && insertImgFn(url); /* OSS-Bild hochladen, Bild in den Editor einfügen*/
				});
			};
			// Einen Editor erstellen editor.create();
			dieser.editor = Herausgeber;
		}
	},
	vorZerstören() {
		// Zerstöre den Editor this.editor.destroy();
		dieser.editor = null;
	}
};
</Skript>

Hinweis: Informationen zur spezifischen Parameterkonfiguration finden Sie in den Anweisungen in der Editordokumentation.

Verwenden Sie den extrahierten Editor in der Komponente:

<Vorlage>
	<div Klasse="Herausgeber">
		<el-card shadow="nie">
			<div Slot = "Header" Klasse = "Clearfix">
				<span>Rich-Text-Editor</span>
			</div>
			<div Klasse="Kartencenter">
				<WEditor :defaultText="defaultText" :richText.sync="richText" />
			</div>
		</el-Karte>
	</div>
</Vorlage>

<Skript>
// Den gepackten Editor importieren import WEditor from "@/components/WEditor";

Standard exportieren {
	Name: "Editor",
	Komponenten: { WEditor },
	Daten() {
		zurückkehren {
			// Standardwert defaultText: "",
			// Rich-Text aktualisierter Wert richText: ""
		};
	},
	erstellt() {
		// Warten Sie, bis die Komponente geladen ist, und weisen Sie den Wert this.$nextTick(() => { zu.
			this.defaultText = `<p style="text-align: center; "><img src="https://tr-mba.oss-cn-beijing.aliyuncs.com/picture/202010/20_222430_8011.png" width="30%" style="text-align: center; max-width: 100%;"></p>`;
		});
	}
};
</Skript>

Oben sind die Details der Integration eines Rich-Text-Editors in Vue aufgeführt, der das Zoomen und Ziehen von Bildern unterstützt. Weitere Informationen zum Rich-Text-Editor von Vue finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Vue implementiert ein Beispiel für einen Bildvorschau-Effekt (Vergrößern, Verkleinern, Ziehen)
  • Vue implementiert Drag & Drop oder Klicken zum Hochladen von Bildern
  • Vue implementiert die Drag & Drop-Funktion für Bilder
  • Vue implementiert das Problem der Bildskalierung
  • Verwenden Sie Vue-Komponenten, um die Drag- und Zoomfunktion von Bildern zu realisieren

<<:  Einführung in den Swap-Speicher des Linux-Systems

>>:  Protokollieren Sie ein langsames Abfrageereignis, das durch eine Fehleinschätzung des Online-MySQL-Optimierers verursacht wurde.

Artikel empfehlen

js realisiert die Bildschneidefunktion

In diesem Artikelbeispiel wird der spezifische Co...

SMS-Bestätigungscode-Anmeldefunktion basierend auf Antd Pro (Prozessanalyse)

Inhaltsverzeichnis Zusammenfassung Gesamtprozess ...

MySQL Router implementiert MySQL Lese-/Schreibtrennung

Inhaltsverzeichnis 1. Einleitung 2. MySQL-Router ...

So fügen Sie in MySQL 8.0 schnell Spalten hinzu

Vorwort: Ich habe vor langer Zeit gehört, dass My...

So führen Sie den Betrieb nach dem Verlassen des Docker-Containers weiter aus

Phänomen: Führen Sie ein Image aus, zum Beispiel ...

Eine kurze Diskussion über React Native APP-Updates

Inhaltsverzeichnis App-Update-Prozess Grobes Flus...

Docker-Grundlagen-Tutorial: Detaillierte Erklärung der Dockerfile-Syntax

Vorwort Dockerfile ist ein vom Docker-Programm in...

Mysql praktische Übungen einfaches Bibliotheksverwaltungssystem

Inhaltsverzeichnis 1. Sortierfunktion 2. Vorberei...

HTML-Tbody-Verwendung

Strukturierte Tabelle (nur IExplore) 1) Gruppieren...

Beispiel für die Installation von nginx in einem angegebenen Verzeichnis

Aufgrund von Unternehmensanforderungen müssen zwe...

5 Gründe, warum sich Responsive Webdesign nicht lohnt

Dieser Artikel stammt aus Tom Ewers Managewp-Blog ...