Technologie-Stack und Version Vite2 + Vue3 + fontAwesome5 Die Verwendung von Symbolen in Vue3 und fontAwesome ist einfach und benutzerfreundlich, aber manchmal fehlt das gewünschte Symbol. Mit der SVG-Methode können Sie direkt herunterladen und verwenden, was Sie möchten. Die Typen sind vollständiger und es gibt im Grunde kein Symbol, das Ihren Anforderungen nicht entspricht. Es ist jedoch nicht so einfach wie fontAwesome und Sie müssen jedes Mal das entsprechende Bild herunterladen. 1. Verwenden Sie SVGa Laden Sie das SVG-Bild herunter, das Sie verwenden möchten, und speichern Sie es im Ordner src/icons b Installieren Sie den Loader, der von fs und svg abhängt Befehl: Befehl: c Erstellen Sie eine Vorlagendatei index.vue Vorlagendateicode <Vorlage> <svg :Klasse="svgKlasse" v-bind = "$attrs"> <Verwenden Sie: xlink: href="Symbolname"></Verwenden> </svg> </Vorlage> <Skript-Setup> importiere { defineProps, berechnet } von "vue"; const props = defineProps({ Name: { Typ: Zeichenfolge, erforderlich: true }, Farbe: Typ: Zeichenfolge, Standard: '', } }) const iconName = berechnet(()=>`#icon-${props.name}`); const svgClass = berechnet(()=> { // console.log(Eigenschaftenname,'Eigenschaftenname'); wenn (Eigenschaften.Name) { gibt `svg-icon icon-${props.name}` zurück } gib 'svg-icon' zurück }); </Skript> <style scoped lang ="scss"> .svg-Symbol{ Breite: 3em; Höhe: 3em; füllen: aktuelle Farbe; Rand: durchgehend 2 Pixel rot; vertikale Ausrichtung: Mitte; } </stil>> d Globale Registrierung main.js importiere { svgIcon } aus './components' .Komponente('svg-Symbol',svgIcon) e Erstellen Sie eine Importverarbeitungsfunktion und erstellen Sie svgBulider.js in Plugins Code importiere { readFileSync, readdirSync } von 'fs' let idPerfix = '' const svgTitle = /<svg([^>+].*?)>/ const clearHeightWidth = /(Breite|Höhe)="([^>+].*?)"/g const hasViewBox = /(viewBox="[^>+].*?")/g const clearReturn = /(\r)|(\n)/g Funktion findSvgFile(dir) { const svgRes = [] const dirents = readdirSync(dir, { mitDateitypen: true }) für (const dirent von dirents) { wenn (dirent.isDirectory()) { svgRes.push(...findSvgFile(dir + dirent.name + '/')) } anders { const svg = readFileSync(dir + dirent.name) .toString() .replace(clearReturn, '') .replace(svgTitle, ($1, $2) => { lass Breite = 0 sei Höhe = 0 lass Inhalt = $2.replace( klareHöheBreite, (s1, s2, s3) => { wenn (s2 === 'Breite') { Breite = s3 } sonst wenn (s2 === 'Höhe') { Höhe = s3 } zurückkehren '' } ) wenn (!hasViewBox.test($2)) { Inhalt += `viewBox="0 0 ${width} ${height}"` } gibt `<symbol id="${idPerfix}-${dirent.name.replace( '.svg', '' )}" ${content}>` }) .replace('</svg>', '</symbol>') svgRes.push(svg) } } svgRes zurückgeben } export const svgBuilder = (Pfad, Perfix = 'Symbol') => { wenn (Pfad === '') return idPerfix = Perfix const res = findSvgFile(Pfad) zurückkehren { Name: "svg-transform", transformIndexHtml(html) { html.replace( zurückgeben '<Text>', ` <Text> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; breite: 0; höhe: 0"> ${res.join('')} </svg> ` ) } } } f Ändern Sie die Konfigurationsdatei und importieren Sie svgBulider in die Konfigurationsdatei Ändern Sie vite.config.js importiere { svgBuilder } von './src/plugins/svgBuilder'; ' exportiere Standard-DefineConfig({ Plugins: [ vue(), // Rufen Sie die entsprechende Funktion auf, um SVG zu verarbeiten svgBuilder('./src/icons/') // Der entsprechende Ordner, sonst kann er nicht gefunden werden] }) g Verwenden von SVG Kernteil <svg-icon name="questionmark" />//name Nehmen Sie Ihr SVG-Bild 2. Verwenden Sie fontAwesomeeine npm-Installation von Abhängigkeiten $ npm ich --save @fortawesome/fontawesome $ npm ich --save @fortawesome/vue-fontawesome $ npm ich --save @fortawesome/fontawesome-free-solid $ npm ich --save @fortawesome/fontawesome-free-regular $ npm i --save @fortawesome/fontawesome-free-brands b mian.js globale Registrierung //Bei Bedarf importieren importiere { FontAwesomeIcon } von '@fortawesome/vue-fontawesome' importiere { Bibliothek } von '@fortawesome/fontawesome-svg-core' importiere { faAd } von '@fortawesome/free-solid-svg-icons' importiere { faAddressBook } von '@fortawesome/free-solid-svg-icons' library.add(faAdressbuch) // Alles importieren import { fas } von '@fortawesome/free-solid-svg-icons' importiere { fab } von '@fortawesome/free-brands-svg-icons' Bibliothek.add(fas,fab) .Komponente('font-awesome-icon', FontAwesomeIcon) c Verwendung //Verwendung von On-Demand-Import<font-awesome-icon icon="address-book" class="fa-spin fa-lg"/> //Verwendung des globalen Imports <font-awesome-icon :icon="['fas','address-book']" /> 3 QuellenQuelle fontAwesome https://www.jb51.net/article/228944.htm Quelle svg https://www.jb51.net/article/228948.htm 4 FazitBestimmen Sie den entsprechenden Technologie-Stack und die Version, befolgen Sie die Schritte und es sollte kein Problem geben. Damit ist dieser Artikel über zwei Möglichkeiten zur Verwendung von Symbolen in Vue3 abgeschlossen. Weitere relevante Inhalte zur Verwendung von Symbolen in Vue3 finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Langer HTML-Text wird automatisch abgeschnitten, wenn er die Tag-Breite überschreitet
Zwei Fälle: 1. Mit Index 2. Ohne Index Voraussetz...
Jeder, der ein wenig über Datenoperationen und -w...
1. Wenn MySQL nicht erfolgreich gestartet wird, ü...
Wenn wir eine Hintergrundfarbe mit Farbverlauf er...
Der Standardzeittyp (Datum/Uhrzeit und Zeitstempe...
In Projekten kommt es häufig vor, dass eine Liste...
In diesem Artikel wird die Erstellung einer USB-S...
Lernziele: Die beiden Funktionen parseInt() und N...
Heute werde ich diese Anfängerfragen beantworten: ...
Hintergrund: Es gibt ein Flask-Projekt, das eine ...
Vorwort 1. Die in diesem Artikel verwendeten Tool...
1. Einleitung (1) Einführung in vw/vh Bevor wir s...
Hintergrund Heute habe ich CodePen durchsucht und...
Als ich MySQL konfiguriert habe, habe ich die Sta...
Erstellen Sie ein Verzeichnis cd /usr/local/docke...