La gestion des icônes dans Vue.js peut être délicate. Les polices d'icônes sont pratiques mais manquent de flexibilité de personnalisation, et le contrôle des versions peut être un cauchemar en raison de leur nature binaire. Les SVG offrent une solution supérieure, mais le maintien de la facilité d'utilisation et de la gestion efficace nécessite une approche réfléchie.
Cet article présente un système d'icônes SVG idéal pour les applications Vue.js, en se concentrant sur la simplicité et la maintenabilité:
- Ajout / suppression d'icônes: Ajoutez ou supprimez simplement les SVG d'un dossier désigné.
- Utilisation: utilisez des icônes dans des modèles avec la syntaxe simple
<svg-icon icon="rocket"></svg-icon>
. - Styling: Icônes d'échelle et de couleur utilisant des propriétés
font-size
etcolor
CSS, imitant le comportement des polices d'icônes. - Optimisation: évite la duplication du code SVG pour plusieurs instances de la même icône.
- Intégration WebPack: aucune modification de configuration Webpack n'est nécessaire.
Ce système est construit à l'aide de deux petits composants Vue à un seul fichier et nécessite:
- WebPack: supposé si vous utilisez la Vue CLI.
-
svg-inline-loader
: Installable vianpm install svg-inline-loader --save-dev
. Ce chargeur nettoie les parties inutiles du code SVG.
Le composant SVG Sprite ( SvgSprite.vue
)
Pour éviter la répétition du code SVG, nous créons un SVG Sprite - un SVG caché contenant toutes les autres icônes SVG. Les icônes sont accessibles via le<use></use>
Tag faisant référence à l'ID de l'icône:<svg><use xlink:href="#rocket"></use></svg>
. Le composant SvgSprite
implémente ceci:
<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>
Le modèle comprend un caché<svg></svg>
élément dont le contenu est généré dynamiquement par $options.svgSprite
. Le script utilise require.context
avec svg-inline-loader
pour traiter les SVG, supprimant les balises et attributs inutiles. Il convertit ensuite chaque SVG en un<symbol></symbol>
élément, ajoutant un ID unique.
Placez ce composant en haut de votre fichier App.vue
.
La composante icône ( SvgIcon.vue
)
Le composant SvgIcon
est plus simple, en utilisant le<use></use>
Tag aux icônes de référence du 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>
Le CSS stylise l'icône pour se comporter comme une police d'icône, permettant des ajustements de couleur et de taille faciles. Un accessoire spin
ajoute une animation.
Enregistrez ce composant dans main.js
:
Importer Vue à partir de «Vue» importer svgicon à partir de '@ / composants / svgicon.vue' Vue.Component («SVG-ICON», SVGICON)
Ce système fournit une solution propre, efficace et facilement maintenable pour gérer les icônes SVG dans vos applications Vue.js. D'autres améliorations pourraient inclure la gestion des ratios d'aspect non carré et la compatibilité des outils de cadre / build plus large.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

CSSCOUNTERSAREUSEUSTTOMAGAUTAMAMATALUMENTSINDWEBDESIGNS.1) Ils ont été des cas de contenu, des listitems et de la forme.

L'utilisation d'ombres de défilement, en particulier pour les appareils mobiles, est un peu de UX subtil que Chris a couvert auparavant. Geoff a couvert une approche plus récente qui utilise la propriété d'animation-timeline. Voici encore une autre façon.

Passons à travers un rafraîchissement rapide. Les cartes d'image datent jusqu'à HTML 3.2, où, d'abord, les cartes côté serveur, puis les cartes côté client ont défini les régions cliquables sur une image à l'aide de cartes et d'éléments de zone.

L'enquête sur l'état des développeurs est désormais ouverte à la participation, et contrairement aux enquêtes précédentes, il couvre tout sauf le code: carrière, lieu de travail, mais aussi santé, passe-temps, etc.

CSS Grid est un outil puissant pour créer des dispositions Web complexes et réactives. Il simplifie la conception, améliore l'accessibilité et offre plus de contrôle que les méthodes plus anciennes.

L'article traite de CSS Flexbox, une méthode de mise en page pour l'alignement et la distribution efficaces de l'espace dans les conceptions réactives. Il explique l'utilisation de Flexbox, la compare à la grille CSS et détaille la prise en charge du navigateur.

L'article traite des techniques de création de sites Web réactifs à l'aide de CSS, y compris des balises de méta de la fenêtre, des grilles flexibles, des médias fluides, des requêtes multimédias et des unités relatives. Il couvre également l'utilisation de la grille CSS et de Flexbox ensemble et recommande le cadre CSS

L'article traite de la propriété CSS-Box-Sizing, qui contrôle comment les dimensions des éléments sont calculées. Il explique des valeurs telles que la boîte de contenu, la boîte de bordure et la boîte de padding, et leur impact sur la conception de la disposition et l'alignement de la forme.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

Dreamweaver Mac
Outils de développement Web visuel

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.
