chore: 🔨 本地 SVG 加载方式由 vite-plugin-svg-icons 切换为 @unocss/preset-icons

This commit is contained in:
Ray.Hao
2025-02-07 23:57:57 +08:00
parent e041c5575c
commit dd275dae27
23 changed files with 111 additions and 118 deletions

View File

@@ -240,7 +240,7 @@
</el-icon>
</template>
<template v-else>
<svg-icon :icon-class="scope.row[col.prop]" />
<div class="i-svg:{{ scope.row[col.prop] }}" />
</template>
</template>
</template>

View File

@@ -1,6 +1,6 @@
<template>
<div @click="toggle">
<svg-icon :icon-class="isFullscreen ? 'fullscreen-exit' : 'fullscreen'" />
<div :class="`i-svg:` + (isFullscreen ? 'fullscreen-exit' : 'fullscreen')" />
</div>
</template>

View File

@@ -4,7 +4,7 @@
class="px-[15px] flex items-center justify-center color-[var(--el-text-color-regular)]"
@click="toggleClick"
>
<svg-icon icon-class="collapse" :class="{ hamburger: true, 'is-active': isActive }" />
<div :class="['i-svg:collapse', { hamburger: true, 'is-active': isActive }]" />
</div>
</template>

View File

@@ -11,7 +11,7 @@
<component :is="selectedIcon.replace('el-icon-', '')" />
</el-icon>
<template v-else>
<svg-icon :icon-class="selectedIcon" />
<div :class="`i-svg:${selectedIcon}`" />
</template>
</template>
<template #suffix>
@@ -52,7 +52,7 @@
@click="selectIcon(icon)"
>
<el-tooltip :content="icon" placement="bottom" effect="light">
<svg-icon :icon-class="icon" />
<div :class="`i-svg:${icon}`" />
</el-tooltip>
</li>
</ul>

View File

@@ -1,7 +1,7 @@
<template>
<el-dropdown trigger="click" @command="handleLanguageChange">
<div>
<svg-icon icon-class="language" :size="size" />
<div class="i-svg:language" />
</div>
<template #dropdown>
<el-dropdown-menu>

View File

@@ -1,6 +1,6 @@
<template>
<div @click="openSearchModal">
<svg-icon icon-class="search" />
<div class="i-svg:search" />
<el-dialog
v-model="isModalVisible"
width="30%"
@@ -38,8 +38,8 @@
<el-icon v-if="item.icon && item.icon.startsWith('el-icon')">
<component :is="item.icon.replace('el-icon-', '')" />
</el-icon>
<svg-icon v-else-if="item.icon" :icon-class="item.icon" />
<svg-icon v-else icon-class="menu" />
<div v-else-if="item.icon" :class="`i-svg:${item.icon}`" />
<div v-else class="i-svg:menu" />
{{ item.title }}
</li>
</ul>
@@ -48,14 +48,15 @@
<template #footer>
<div class="dialog-footer">
<svg-icon icon-class="enter" size="20px" />
<div class="i-svg:enter w-5 h-5" />
<span>选择</span>
<svg-icon icon-class="down" size="20px" class="ml-5" />
<svg-icon icon-class="up" size="20px" class="ml-1" />
<div class="i-svg:down w-5 h-5 ml-5" />
<div class="i-svg:up w-5 h-5 ml-5" />
<span>切换</span>
<svg-icon icon-class="esc" size="20px" class="ml-5" />
<div class="i-svg:esc w-5 h-5ml-5" />
<span>退出</span>
</div>
</template>

View File

@@ -3,7 +3,7 @@
<el-tooltip :content="$t('sizeSelect.tooltip')" effect="dark" placement="bottom">
<el-dropdown trigger="click" @command="handleSizeChange">
<div>
<svg-icon icon-class="size" />
<div class="i-svg:size" />
</div>
<template #dropdown>
<el-dropdown-menu>

View File

@@ -1,41 +0,0 @@
<template>
<svg aria-hidden="true" class="svg-icon" :style="'width:' + size + ';height:' + size">
<use :xlink:href="symbolId" :fill="color" />
</svg>
</template>
<script setup lang="ts">
const props = defineProps({
prefix: {
type: String,
default: "icon",
},
iconClass: {
type: String,
required: false,
default: "",
},
color: {
type: String,
default: "",
},
size: {
type: String,
default: "1em",
},
});
const symbolId = computed(() => `#${props.prefix}-${props.iconClass}`);
</script>
<style scoped>
.svg-icon {
display: inline-block;
width: 1em;
height: 1em;
overflow: hidden;
vertical-align: -0.15em; /* 因icon大小被设置为和字体大小一致而span等标签的下边缘会和字体的基线对齐故需设置一个往下的偏移比例来纠正视觉上的未对齐效果 */
outline: none;
fill: currentcolor; /* 定义元素的颜色currentColor是一个变量这个变量的值就表示当前元素的color值如果当前元素未设置color值则从父元素继承 */
}
</style>