日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

在vue3+vite+ ts 项目中使用svg

發(fā)布時間:2023/12/31 vue 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在vue3+vite+ ts 项目中使用svg 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一:components下新建svgIcon.vue文件

<template> <svg :class="svgClass" v-bind="$attrs" :style="style"><use :xlink:href="iconName" /></svg> </template><script lang="ts"> import { computed } from 'vue' import { defineComponent} from 'vue' export default defineComponent({props: {name: {type: String,required: true,},style: {type: Object,default: '',},},setup(props) {const iconName = computed(()=>`#icon-${props.name}`);const svgClass = computed(() => {if (props.name) {return `svg-icon icon-${props.name}`}return 'svg-icon'})return {svgClass,iconName}}, }) </script><style> .svg-icon { fill: currentColor;vertical-align: middle; } </style>

二: 創(chuàng)建icons文件夾,存放svg文件

三:在main.ts里面全局注入svg-icon組件

// 注入svg import svgIcon from './components/svgIcon.vue' app.component('svg-icon', svgIcon)

四: 在plugins文件夾創(chuàng)建svgBuilder.js

import { readFileSync, readdirSync } from 'fs'let idPerfix = '' const svgTitle = /<svg([^>+].*?)>/ const clearHeightWidth = /(width|height)="([^>+].*?)"/gconst hasViewBox = /(viewBox="[^>+].*?")/gconst clearReturn = /(\r)|(\n)/gfunction findSvgFile(dir) {const svgRes = []const dirents = readdirSync(dir, {withFileTypes: true})for (const dirent of dirents) {if (dirent.isDirectory()) {svgRes.push(...findSvgFile(dir + dirent.name + '/'))} else {const svg = readFileSync(dir + dirent.name).toString().replace(clearReturn, '').replace(svgTitle, ($1, $2) => {// console.log(++i)// console.log(dirent.name)let width = 0let height = 0let content = $2.replace(clearHeightWidth,(s1, s2, s3) => {if (s2 === 'width') {width = s3} else if (s2 === 'height') {height = s3}return ''})if (!hasViewBox.test($2)) {content += `viewBox="0 0 ${width} ${height}"`}return `<symbol id="${idPerfix}-${dirent.name.replace('.svg','')}" ${content}>`}).replace('</svg>', '</symbol>')svgRes.push(svg)}}return svgRes }export const svgBuilder = (path, perfix = 'icon') => {if (path === '') returnidPerfix = perfixconst res = findSvgFile(path)// console.log(res.length)// const res = []return {name: 'svg-transform',transformIndexHtml(html) {return html.replace('<body>',`<body><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; width: 0; height: 0">${res.join('')}</svg>`)}} }

五: 最后在vite.config.ts修改配置

import { svgBuilder } from './src/plugins/svgBuilder'; export default defineConfig({plugins: [svgBuilder('./src/icons/svg/')] // 這里已經(jīng)將src/icons/svg/下的svg全部導(dǎo)入,無需再單獨(dú)導(dǎo)入 })

六: 在頁面中使用

<svg-icon name="aa" :style='style' ></svg-icon><script lang="ts"> import { defineComponent } from 'vue' export default defineComponent({name: 'HelloWorld', setup: () => {const style = {width: '50px'}return { style }} }) </script>

總結(jié)

以上是生活随笔為你收集整理的在vue3+vite+ ts 项目中使用svg的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 丰满少妇影院 | 麻豆婷婷 | 毛片大全在线观看 | 午夜视频在线观看一区二区 | 久久综合一区二区 | 美女打屁股网站 | 喷水在线观看 | 在线观看一级片 | 欧美日韩在线播放 | 最新中文字幕在线观看 | 美女午夜激情 | 亚洲欧美综合视频 | www.17c.com喷水少妇 | 四虎精品欧美一区二区免费 | 国产精品影院在线观看 | 99久久久无码国产精品免费麻豆 | 91中文字幕在线播放 | 久久久一区二区三区四区 | 毛片xxx| 美国爱爱视频 | 亚洲五月网 | 成人手机在线观看 | 国产精品偷伦视频免费观看了 | www.555国产精品免费 | 在线小视频你懂的 | 国产盗摄精品一区二区酒店 | 99久久99久久精品国产片果冰 | 丁香婷婷社区 | 91在线一区二区三区 | 亚洲欧洲一区 | 中文在线一区二区 | 亚洲网站免费看 | 免费人成年激情视频在线观看 | 欧美夜夜夜 | 国产无码精品合集 | 亚洲六月丁香色婷婷综合久久 | 国产福利电影在线 | 岛国av中文字幕 | 欧美性一区二区三区 | 免费av在 | 潘金莲一级淫片aaaaa武则天 | 中文字av| 日本人与黑人做爰视频 | 国产精品99久久久 | 中文在线а√在线 | 国产一线二线三线在线观看 | 性欧美8khd高清极品 | 国产欧美不卡 | 亚洲黄网在线观看 | 成人91视频 | 波多野结衣1区2区3区 | 亚洲精品影院 | 密桃成熟时在线观看 | 国产三区在线视频 | 一区二区三区高清在线观看 | 久久久91视频 | 超碰狠狠 | japanese强行粗暴 | 97伊人网 | 日韩中文一区二区 | 久久中文字幕在线观看 | 亚洲欧洲国产日韩 | 成人福利视频网 | 在线永久看片免费的视频 | 久青草免费视频 | 波多野结衣av在线播放 | 中文字幕在线播出 | 中文在线а√在线8 | 欧美日韩在线播放视频 | 美女一区二区视频 | 免费在线精品视频 | 五月天社区 | 国产精品一区一区三区 | 男男大尺度 | 狠狠狠 | 91精品久久久久久久久久久 | 亚洲综合欧美综合 | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 久久99久久精品 | 综合色在线 | 国产精品呻吟久久 | 伊人射| 超污网站在线观看 | 久艹在线观看 | 国产黄色片免费观看 | 在线日韩一区 | 欧美精品亚洲一区 | 在线免费看黄视频 | 麻豆导航| 不卡视频免费在线观看 | 欣赏asian国模裸体pics | 全部免费毛片在线播放一个 | 手机在线一区二区三区 | 亚洲成人精 | 久久综合视频网 | 天天摸天天舔天天操 | 激情戏网站 | 欧美壮男野外gaytube | 亚洲国产精品无码专区 |