| | |
| | | <template> |
| | | <!-- 如果是 Element UI 图标,保持不变 --> |
| | | <i v-if="iconFileName.indexOf('el-icon-') === 0" :class="iconFileName" /> |
| | | |
| | | |
| | | <!-- 如果是 SVG 图标,进行改造 --> |
| | | <svg v-else class="svg-icon" aria-hidden="true" v-on="$listeners" :style="svgStyle"> |
| | | <!-- |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import config from "@/assets/js/config"; |
| | | export default { |
| | | name: 'SvgIcon', |
| | | props: { |
| | |
| | | color: { |
| | | type: String, |
| | | // 默认值设为 'inherit',它会继承父元素的文字颜色 |
| | | default: 'inherit' |
| | | default: 'inherit' |
| | | }, |
| | | // 可选:增加尺寸控制 |
| | | size: { |
| | |
| | | // 使用计算属性来动态生成样式 |
| | | svgStyle() { |
| | | return { |
| | | // 关键点:将传入的 color 值赋给 CSS 的 'color' 属性 |
| | | color: this.color, |
| | | // 关键点:设置图标尺寸 |
| | | fontSize: this.size, |
| | | // 如果需要,也可以在这里设置宽高,但用 font-size 更灵活 |
| | | // width: this.size, |
| | | // height: this.size, |
| | | }; |
| | | } |
| | | }, |
| | | mounted() { |
| | | console.log(config.activeBook.bookThemeColor, "987654"); |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <style scoped> |
| | | .svg-icon { |
| | | /* |
| | | 核心魔法! |
| | | 1. width 和 height 使用 em 单位,使其与 font-size 关联。 |
| | | 2. overflow: hidden 防止图标在某些情况下溢出。 |
| | | 3. vertical-align: 调整图标与文字的对齐基线。 |
| | |
| | | height: 1em; |
| | | overflow: hidden; |
| | | vertical-align: -0.15em; |
| | | fill: currentColor; |
| | | fill: currentColor; |
| | | } |
| | | |
| | | </style> |