Icon icon processing solutionThe goal of this record is to record how to encapsulate icons other than element-plus into a component. I hope it can help me deal with icon problems at work. Analysis shows that element-plus icons can be displayed through el-icon, while custom icons require a custom icon component to display custom svg icons. Component Capabilities
Icon component packaging ideasIcon component for display Create <template> <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" :class="className" /> <svg v-else class="svg-icon" :class="className" aria-hidden="true"> <use :xlink:href="iconName" rel="external nofollow" /> </svg> </template> <script setup> import { isExternal as external } from '@/utils/validate' import { defineProps, computed } from 'vue' const props = defineProps({ //icon icon: { type: String, required: true }, // Icon class name className: { type: String, default: '' } }) /** * Determine whether it is an external icon*/ const isExternal = computed(() => external(props.icon)) /** * External icon style */ const styleExternalIcon = computed(() => ({ mask: `url(${props.icon}) no-repeat 50% 50%`, '-webkit-mask': `url(${props.icon}) no-repeat 50% 50%` })) /** * Project icon */ const iconName = computed(() => `#icon-${props.icon}`) </script> <style lang='scss' scoped> .svg-icon { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden; } .svg-external-icon { background-color: currentColor; mask-size: cover !important; display: inline-block; } </style> Determine whether the resource is an external resource Create /** * Determine whether it is an external resource*/ export function isExternal(path) { return /^(https?:|mailto:|tel:)/.test(path) } External svg icon displayBy introducing the component svg-icon, icon passes the icon external link. <span class="svg-container"> <svg-icon icon="https://xxx.svg"></svg-icon> </span> Processing SVG icons in projects
Files do two things
The index.js code is as follows Reference Document Dependency Management | webpack Chinese Documentation import SvgIcon from '@/components/SvgIcon' // Create your own context through require.context() function const svgRequire = require.context('./svg', false, /\.svg$/) // At this point, a require function is returned, which can accept a request parameter for the require import. // This function provides three properties, and you can get all svg icons through require.keys() // Traverse the icons and pass the icons as requests to the require import function to complete the import of local svg icons svgRequire.keys().forEach(svgIcon => svgRequire(svgIcon)) export default app => { app.component('svg-icon', SvgIcon) } Globally registered project iconsImport this file into main.js ... // Import svgIcon import installIcons from '@/icons' ... installIcons(app) ... Use internal icon// Username <svg-icon icon="user" /> // Password<svg-icon icon="password" /> Use Install: Configure const path = require('path') function resolve(dir) { return path.join(__dirname, dir) } module.exports = { chainWebpack(config) { // Set up svg-sprite-loader config.module .rule('svg') .exclude.add(resolve('src/icons')) .end() config.module .rule('icons') .test(/\.svg$/) .include.add(resolve('src/icons')) .end() .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]' }) .end() } } This will handle the internal svg icon. The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: HTML marquee tag usage examples
>>: Docker Compose installation and usage steps
Table of contents 1. Baidu Map API Access 2. Usin...
When we create a page, especially a homepage, we ...
Table of contents 1 Problems encountered in trans...
As the platform continues to grow, the project...
In this section, we will learn about list element...
There are many differences between IE6 and IE7 in ...
Nowadays, mobile devices are becoming more and mo...
Table of contents 1. for loop: basic and simple 2...
In the field of data analysis, database is our go...
mysql-5.7.9 finally provides shutdown syntax: Pre...
Preface This article mainly introduces the soluti...
<br />This is an article I collected a long ...
This article will not explain the use and install...
Step 1: Download the mysql driver cmd enters the ...
Chinese characters cannot be input in lower versio...