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
Code kopieren Der Code lautet wie folgt: <hr S...
Frage: Nach dem Neustart des Computers kann der M...
Nginx verbirgt die Versionsnummer In einer Produk...
Für die Bereitstellung von Hyper-V gelten die fol...
1. Wichtige Punkte für die frühzeitige Planung de...
Produktdesigner sind mit komplexen und großen Fert...
Inhaltsverzeichnis Vorsichtsmaßnahmen Notwendige ...
Da für den Import benutzerdefinierter Ubuntu-Imag...
In diesem Artikel wird der spezifische Code von j...
In der folgenden Analyse geht es um Produktdesign...
var numA = 0,1; var numB = 0,2; Alarm (Zahl A + Z...
Der Unterschied zwischen := und = = Nur beim Setz...
Vorne geschrieben Manchmal müssen Sie bei der Ver...
1. MySQLs eigenes Stresstest-Tool Mysqlslap mysql...
Hiermit werden die Grundkenntnisse des Interviewt...