68 lines
1.4 KiB
Vue
68 lines
1.4 KiB
Vue
|
<template>
|
|||
|
<i class="fn-icon bg-center-contain" :style="iconStyle"></i>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
name: 'Icon',
|
|||
|
props: {
|
|||
|
// 来源(inner、outer)
|
|||
|
from: {
|
|||
|
type: String,
|
|||
|
default: 'inner'
|
|||
|
},
|
|||
|
// 路径
|
|||
|
// 若为 inner,自动添加 @/assets/icon/
|
|||
|
path: {
|
|||
|
type: String,
|
|||
|
default: 'unknown.svg'
|
|||
|
},
|
|||
|
// 尺寸
|
|||
|
size: {
|
|||
|
type: String,
|
|||
|
default: '1em'
|
|||
|
},
|
|||
|
// 显示图标
|
|||
|
showIcon: {
|
|||
|
type: Boolean,
|
|||
|
default: true
|
|||
|
}
|
|||
|
},
|
|||
|
computed: {
|
|||
|
// 图标样式
|
|||
|
iconStyle() {
|
|||
|
var style = {
|
|||
|
width: this.size,
|
|||
|
height: this.size
|
|||
|
};
|
|||
|
var iconPath = '';
|
|||
|
|
|||
|
// 不显示图标内容
|
|||
|
if (!this.showIcon) {
|
|||
|
return style;
|
|||
|
}
|
|||
|
|
|||
|
if (this.from == 'inner') {
|
|||
|
// 内部
|
|||
|
iconPath = require(`@/assets/icon/${this.path}`);
|
|||
|
} else if (this.from == 'outer') {
|
|||
|
// 外部
|
|||
|
iconPath = this.path;
|
|||
|
}
|
|||
|
|
|||
|
style.backgroundImage = `url('${iconPath}')`;
|
|||
|
|
|||
|
return style;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="less" scoped>
|
|||
|
.fn-icon {
|
|||
|
display: inline-block;
|
|||
|
vertical-align: middle;
|
|||
|
font-style: normal;
|
|||
|
}
|
|||
|
</style>
|