12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- <template>
- <svg :class="svgClass" :aria-hidden="true">
- <use :xlink:href="iconName" />
- </svg>
- </template>
- <script setup>
- import { computed } from 'vue'
- const props = defineProps({
- iconClass: {
- type: String,
- },
- icon: {
- // iconfont 库
- type: String,
- },
- className: {
- type: String,
- default: '',
- },
- })
- const iconName = computed(() => {
- return props.icon ? `#${props.icon}` : `#icon-${props.iconClass}`
- })
- const svgClass = computed(() => {
- if (props.className) {
- return `svg-icon${props.className}`
- }
- return 'svg-icon'
- })
- </script>
- <style scoped lang="less">
- .svg-icon {
- width: 1em;
- height: 1em;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
- }
- </style>
|