Vue.js verarbeitet Icon-Symbole über Komponenten

Vue.js verarbeitet Icon-Symbole über Komponenten

Icon-Icon-Verarbeitungslösung

Das Ziel dieses Datensatzes besteht darin, aufzuzeichnen, wie andere Symbole als Element-Plus in eine Komponente eingekapselt werden können. Ich hoffe, es kann mir bei der Lösung von Symbolproblemen bei der Arbeit helfen.

Die Analyse zeigt, dass Element-Plus-Symbole über El-Icon angezeigt werden können, während benutzerdefinierte Symbole eine benutzerdefinierte Symbolkomponente erfordern, um benutzerdefinierte SVG-Symbole anzuzeigen.

Komponentenfunktionen

  • Externes SVG-Symbol anzeigen (externer Link)
  • Zeigen Sie das SVG-Symbol im Projekt an

Verpackungsideen für Symbolkomponenten

Symbolkomponente zur Anzeige

Erstellen Sie components/SvgIcon/index.vue :

<Vorlage>
    <div
        v-if="istExternal"
        :Stil="StilExternesSymbol"
        Klasse = "svg-external-icon svg-icon"
        :Klasse="Klassenname"
    />
    <svg v-else class="svg-icon" :Klasse="Klassenname" aria-hidden="true">
        <use :xlink:href="iconName" rel="external nofollow" />
    </svg>
</Vorlage>
​
<Skript-Setup>
    importiere { isExternal als extern } von '@/utils/validate'
    importiere { defineProps, berechnet } von 'vue'
    const props = defineProps({
        //Symbol Symbol: {
            Typ: Zeichenfolge,
            erforderlich: true
        },
        // Name der Symbolklasse className: {
            Typ: Zeichenfolge,
            Standard: ''
        }
    })
    /**
     * Bestimmen Sie, ob es sich um ein externes Symbol handelt*/
    const isExternal = berechnet(() => extern(props.icon))
    /**
     * Externer Symbolstil */
    const styleExternalIcon = berechnet(() => ({
        Maske: `url(${props.icon}) no-repeat 50% 50%`,
        „-webkit-mask“: „url(${props.icon}) keine Wiederholung 50 % 50 %“
    }))
    /**
     * Projektsymbol */
    const iconName = berechnet(() => `#icon-${props.icon}`)
</Skript>
​
<style lang='scss' scoped>
    .svg-Symbol {
        Breite: 1em;
        Höhe: 1em;
        vertikale Ausrichtung: -0,15em;
        füllen: aktuelle Farbe;
        Überlauf: versteckt;
    }
​
    .svg-external-icon {
        Hintergrundfarbe: aktuelle Farbe;
        Maskengröße: Abdeckung !wichtig;
        Anzeige: Inline-Block;
    }
</Stil>
​

Bestimmen Sie, ob es sich bei der Ressource um eine externe Ressource handelt

Erstellen Sie utils/validate.js :

/**
 * Bestimmen Sie, ob es sich um eine externe Ressource handelt*/
Exportfunktion isExternal(Pfad) {
  return /^(https?:|mailto:|tel:)/.test(Pfad)
}

Externe SVG-Symbolanzeige

Durch die Einführung der Komponente svg-icon übergibt icon den externen Link zum Icon.

<span class="svg-container">
    <svg-Symbol Symbol="https://xxx.svg"></svg-Symbol>
</span>

Verarbeiten von SVG-Symbolen in Projekten

  • Erstellen Sie einen Icons-Ordner im src-Verzeichnis des Projekts und importieren Sie die SVG-Icon-Datei
  • Erstellen Sie eine index.js-Datei unter Symbolen

Dateien haben zwei Aufgaben

  • Alle SVG-Symbole importieren
  • Schließen Sie die globale Registrierung von SvgIcon ab

Der index.js-Code lautet wie folgt

Referenzdokument Abhängigkeitsverwaltung | webpack Chinesische Dokumentation

importiere SvgIcon aus '@/components/SvgIcon'
​
// Erstellen Sie Ihren eigenen Kontext mit der Funktion require.context()
const svgRequire = require.context('./svg', false, /\.svg$/)
// An dieser Stelle wird eine Require-Funktion zurückgegeben, welche einen Request-Parameter für den Require-Import entgegennehmen kann.
// Diese Funktion bietet drei Eigenschaften und Sie können alle SVG-Symbole über require.keys() abrufen. // Durchlaufen Sie die Symbole und übergeben Sie die Symbole als Anforderungen an die Funktion „Require Import“, um den Import der lokalen SVG-Symbole abzuschließen. svgRequire.keys().forEach(svgIcon => svgRequire(svgIcon))
​
Standard-App exportieren => {
 app.component('svg-icon', SvgIcon)
}

Weltweit registrierte Projektsymbole

Importieren Sie diese Datei in main.js

...
// svgIcon importieren
importiere installIcons aus '@/icons'
...
installIcons(App)
...

Internes Symbol verwenden

// Benutzername <svg-icon icon="user" />
// Passwort<svg-icon icon="password" />

Verwenden Sie svg-sprite-loader um svg-Symbole zu verarbeiten

svg-sprite-loader ist ein loader in webpack , der auf die Verarbeitung von SVG-Symbolen spezialisiert ist

Installieren: npm i --save-dev [email protected]

Konfigurieren Sie loader in der Datei vue.config.js

const Pfad = require('Pfad')
Funktion „resolve(dir)“ {
 return path.join(__dirname, dir)
}
​
modul.exporte = {
 chainWebpack(Konfiguration) {
   // SVG-Sprite-Loader einrichten
   Konfigurationsmodul
     .regel('svg')
     .exclude.add(auflösen('src/icons'))
     .Ende()
   Konfigurationsmodul
     .regel('Symbole')
     .prüfung(/\.svg$/)
     .include.add(auflösen('src/icons'))
     .Ende()
     .verwenden('svg-sprite-loader')
     .loader('svg-sprite-loader')
     .Optionen({
       symbolId: 'Symbol-[Name]'
     })
     .Ende()
 }
}

Dadurch wird das interne SVG-Symbol verarbeitet.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Zwei Beispiele für die Verwendung von Symbolen in Vue3
  • Schritte zum Anpassen des Symbols in Vue
  • So führen Sie ein Symbolsymbol in ein Vue-Elementprojekt ein
  • So verwenden Sie benutzerdefinierte Symbole in Vue
  • So führen Sie Symbolsymbole in ein Vue-Projekt ein

<<:  Beispiele für die Verwendung von HTML-Marquee-Tags

>>:  Installations- und Verwendungsschritte für Docker Compose

Artikel empfehlen

Verwenden Sie CSS, um zwischen dem Dunkelmodus und dem Hellmodus zu wechseln

In der fünften Ausgabe von Web Skills wird ausdrü...

Lösen Sie das Problem von secure_file_priv null

Fügen Sie secure_file_priv = ' '; führen ...

Der Prozess der Installation von MySQL 8.0.26 auf CentOS7

1. Laden Sie zunächst die entsprechende Datenbank...

Was bedeutet das „a“ in rgba? CSS RGBA-Farbleitfaden

RGBA ist eine CSS-Farbe, mit der Farbwert und Tra...

Erfahren Sie in 3 Minuten, wie Sie den Supervisor Watchdog verwenden

Software- und Hardwareumgebung centos7.6.1810 64b...

Eine kurze Diskussion zu DDL und DML in MySQL

Inhaltsverzeichnis Vorwort 1. DDL 1.1 Datenbankop...

Lösung für die Nichterreichbarkeit des Tencent Cloud Server Tomcat-Ports

Ich habe vor Kurzem einen Server mit Tencent Clou...

So erstellen Sie einen MySQL-Cluster mit hoher Verfügbarkeit und Leistung

Inhaltsverzeichnis Was ist MySQL NDB Cluster? Vor...

Nginx-Server fügt benutzerdefinierte Systemd-Dienstprozessanalyse hinzu

1. Nehmen Sie nginx als Beispiel Nginx mit dem Be...