suchen
HeimWeb-FrontendCSS-TutorialEin Schriftart-ähnliches SVG-Symbolsystem für VUE

Ein Schriftart-ähnliches SVG-Symbolsystem für VUE

Das Verwalten von Symbolen in Vue.js kann schwierig sein. Icon -Schriftarten sind bequem, aber es fehlt die Flexibilität der Anpassung, und die Versionskontrolle kann aufgrund ihrer binären Natur ein Albtraum sein. SVGs bieten eine überlegene Lösung, aber die Aufrechterhaltung der Benutzerfreundlichkeit und das effiziente Management erfordert einen nachdenklichen Ansatz.

Dieser Artikel enthält ein ideales SVG -Symbolsystem für VUE.JS -Anwendungen, wobei der Schwerpunkt auf Einfachheit und Wartbarkeit liegt:

  • Symbol Addition/Entfernung: Fügen Sie SVGs einfach von einem festgelegten Ordner hinzu oder löschen Sie sie einfach.
  • Verwendung: Verwenden Sie Symbole in Vorlagen mit der einfachen Syntax<svg-icon icon="rocket"></svg-icon> .
  • Styling: Skalierungs- und Farbsymbole unter Verwendung von CSS- font-size und color , das Verhalten des Symbol Schriftarts nachahmen.
  • Optimierung: Vermeidet SVG -Code -Duplikation für mehrere Instanzen desselben Symbols.
  • Webpack -Integration: Es sind keine Webpack -Konfigurationsänderungen erforderlich.

Dieses System wird unter Verwendung von zwei kleinen Ein-Datei-Vue-Komponenten erstellt und benötigt:

  • Webpack: Angenommen, wenn Sie die Vue CLI verwenden.
  • svg-inline-loader : Installierbar über npm install svg-inline-loader --save-dev . Dieser Loader reinigt unnötige Teile des SVG -Codes.

Die SVG Sprite -Komponente ( SvgSprite.vue )

Um die Wiederholung von SVG -Code zu verhindern, erstellen wir eine SVG -Sprite - eine versteckte SVG mit allen anderen SVG -Symbolen. Icons werden über die zugegriffen<use></use> Tag verweist auf die ID des Symbols:<svg><use xlink:href="#rocket"></use></svg> . Die SvgSprite -Komponente implementiert dies:

<template>
  <svg height="0" style="display: none;" v-html="$options.svgSprite" width="0"></svg>
</template>

<script>
const svgContext = require.context(
  '!svg-inline-loader?'  
  'removeTags=true'   // Remove title tags, etc.
  '&removeSVGTagAttrs=true'   // Remove attributes
  '&removingTagAttrs=fill'   // Remove fill attributes
  '!@/assets/icons', // Icon directory
  true, // Search subdirectories
  /\w \.svg$/i // Only include SVG files
);

const symbols = svgContext.keys().map(path => {
  const id = path.replace(/^\.\/(.*)\.\w $/, '$1'); // Extract ID from filename
  const content = svgContext(path); // Get SVG content
  return content.replace('<svg', `<symbol id="${id}"`).replace('svg>', 'symbol>'); // Convert to symbol
});

export default {
  name: 'SvgSprite',
  svgSprite: symbols.join('\n'), // Concatenate symbols
};
</script>

Die Vorlage enthält eine versteckte<svg></svg> Element, deren Inhalt dynamisch von $options.svgSprite generiert wird. Das Skript verwendet require.context mit svg-inline-loader um SVGs zu verarbeiten, wodurch unnötige Tags und Attribute entfernt werden. Es wandelt dann jeden SVG in a um<symbol></symbol> Element, Hinzufügen einer eindeutigen ID.

Platzieren Sie diese Komponente oben in Ihrer App.vue -Datei.

Die Symbolkomponente ( SvgIcon.vue )

Die SvgIcon -Komponente ist einfacher und verwendet die<use></use> Tag zu Referenzsymbolen aus dem Sprite:

<template>
  <svg class="icon" :class="{ 'icon-spin': spin }">
    <use :xlink:href="`#${icon}`"></use>
  </svg>
</template>

<script>
export default {
  name: 'SvgIcon',
  props: {
    icon: { type: String, required: true },
    spin: { type: Boolean, default: false },
  },
};
</script>

<style scoped>
svg.icon {
  fill: currentColor;
  height: 1em;
  margin-bottom: 0.125em;
  vertical-align: middle;
  width: 1em;
}
svg.icon-spin {
  animation: icon-spin 2s infinite linear;
}
@keyframes icon-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(359deg); }
}
</style>

Das CSS stilft das Symbol, um sich wie eine Symbolschrift zu verhalten, wodurch einfache Farb- und Größenanpassungen ermöglicht werden können. Eine spin -Requisite fügt Animation hinzu.

Registrieren Sie diese Komponente in main.js :

 Vue aus "Vue" importieren
Importieren Sie SVGICON aus '@/components/svgicon.vue' '
VUE.COMPONENT ('SVG-ICON', SVGICON)

Dieses System bietet eine saubere, effiziente und leicht wartbare Lösung für die Verwaltung von SVG -Symbole in Ihren VUE.JS -Anwendungen. Weitere Verbesserungen könnten die Handhabung von Nicht-Quadrat-Seitenverhältnissen und eine breitere Kompatibilität für Framework/Build-Tool umfassen.

Das obige ist der detaillierte Inhalt vonEin Schriftart-ähnliches SVG-Symbolsystem für VUE. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Entmystifizierende Bildschirmleser: Zugrunde Formen und Best PracticesEntmystifizierende Bildschirmleser: Zugrunde Formen und Best PracticesMar 08, 2025 am 09:45 AM

Dies ist der 3. Beitrag in einer kleinen Serie, die wir in Form von Barrierefreiheit gemacht haben. Wenn Sie den zweiten Beitrag verpasst haben, lesen Sie "Verwalten des Benutzerfokus mit: Fokus-Sichtbar". In

Hinzufügen von Kastenschatten zu WordPress -Blöcken und -ElementenHinzufügen von Kastenschatten zu WordPress -Blöcken und -ElementenMar 09, 2025 pm 12:53 PM

Die CSS-Box-Shadow- und Umrisseigenschaften haben Thema gewonnen. JSON-Unterstützung in WordPress 6.1. Sei ein paar Beispiele für die Funktionsweise in realen Themen und welche Optionen wir diese Stile auf WordPress -Blöcke und Elemente anwenden müssen.

Arbeiten mit GraphQL CachingArbeiten mit GraphQL CachingMar 19, 2025 am 09:36 AM

Wenn Sie kürzlich mit GraphQL gearbeitet oder seine Vor- und Nachteile überprüft haben, haben Sie zweifellos Dinge wie "GraphQL nicht unterstützen Caching" oder gehört

Machen Sie Ihren ersten Seltsamen -Sufle -ÜbergangMachen Sie Ihren ersten Seltsamen -Sufle -ÜbergangMar 15, 2025 am 11:08 AM

Die Sufelte Transition -API bietet eine Möglichkeit, Komponenten zu beleben, wenn sie das Dokument eingeben oder verlassen, einschließlich benutzerdefinierter Svelte -Übergänge.

Edle und coole CSS -Scrollbars: Ein SchaufensterEdle und coole CSS -Scrollbars: Ein SchaufensterMar 10, 2025 am 11:37 AM

In diesem Artikel werden wir in die Welt der Scrollbars eintauchen. Ich weiß, es klingt nicht zu glamourös, aber vertrau mir, eine gut gestaltete Seite geht Hand in Hand

Show, Don ' TellShow, Don ' TellMar 16, 2025 am 11:49 AM

Wie viel Zeit damit, die Inhaltspräsentation für Ihre Websites zu entwerfen? Wenn Sie einen neuen Blog -Beitrag schreiben oder eine neue Seite erstellen, denken Sie darüber nach

Was zum Teufel haben NPM -Befehle?Was zum Teufel haben NPM -Befehle?Mar 15, 2025 am 11:36 AM

NPM-Befehle führen verschiedene Aufgaben für Sie aus, entweder als einmalige oder als kontinuierlich ausgeführter Vorgang für Dinge wie das Starten eines Servers oder das Kompilieren von Code.

Aufbau einer Ethereum -App mit Redwood.js und FaunaAufbau einer Ethereum -App mit Redwood.js und FaunaMar 28, 2025 am 09:18 AM

Mit dem jüngsten Aufstieg von Bitcoins Preis über 20.000 USD und kürzlich von 30.000, dachte ich, es lohnt

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung