diff --git a/src/packages/icon/demo.vue b/src/packages/icon/demo.vue index 451f7ae2b396ae02a144a956f116a836d3fb768e..8e592ebb24e76460de0fd7484af3ba757e5483b9 100644 --- a/src/packages/icon/demo.vue +++ b/src/packages/icon/demo.vue @@ -5,6 +5,13 @@ +

图片链接

+ + +

图标颜色

diff --git a/src/packages/icon/doc.md b/src/packages/icon/doc.md index f4b928b2f934cdbedde5ddae2343ee3b83304dd9..b10bcc3d31d6cf2d46793e77f8a3c2964f26a5c4 100644 --- a/src/packages/icon/doc.md +++ b/src/packages/icon/doc.md @@ -24,6 +24,7 @@ app.use(Icon); ```html + ``` ### 图标颜色 diff --git a/src/packages/icon/index.scss b/src/packages/icon/index.scss index f872f2b4cfbada071c79a8547775ccf4eeb700d4..17f38cb3bedbdfcf6e4bb51ac140d7c2e1049965 100644 --- a/src/packages/icon/index.scss +++ b/src/packages/icon/index.scss @@ -4,4 +4,10 @@ height: 20px; line-height: 20px; text-align: right; + + &__img { + width: 20px; + height: 20px; + object-fit: contain; + } } diff --git a/src/packages/icon/index.vue b/src/packages/icon/index.vue index 285ae5880da9f123125cd881dd2f8b3bfa7da9a5..d25a617b73d68b308c0d5a3b0dfc9eeb2e6fdfc8 100644 --- a/src/packages/icon/index.vue +++ b/src/packages/icon/index.vue @@ -26,24 +26,27 @@ export default create({ default: 'i' } }, - components: {}, emits: ['click'], setup(props, { emit, slots }) { const handleClick = (event: Event) => { emit('click', event); }; - - return () => - h( - props.tag, - { - class: `${props.classPrefix} ${componentName}-${props.name}`, - style: { color: props.color, fontSize: props.size }, - onClick: handleClick - }, - slots.default?.() - ); + const isImage = () => { + return props.name ? props.name.indexOf('/') !== -1 : false; + }; + const styleOptions = { + class: `${props.classPrefix} ${componentName}-${props.name}`, + style: { color: props.color, fontSize: props.size }, + onClick: handleClick + } as any; + if (isImage()) { + styleOptions.class = `${componentName}__img`; + styleOptions.src = props.name; + styleOptions.style['width'] = props.size; + styleOptions.style['height'] = props.size; + } + return () => h(isImage() ? 'img' : props.tag, styleOptions, slots.default?.()); } });