Element Plus图标不显示,颜色设置也没效果怎么办?
刚在项目里用Element Plus的ElIcon组件包裹SvgIcon,图标完全没显示出来。我按文档引入了ElIcon和对应图标组件,但页面就是一片空白。更奇怪的是,我给图标加了红色和2倍大小,样式好像没生效。
import { ElIcon } from 'element-plus'
import SvgIcon from '@/components/SvgIcon.vue'
已经确认SvgIcon组件单独使用时能正常显示,但放在ElIcon里就没了。试过把color写成内联样式也不行,是不是有什么注册步骤漏了?
先确认一下你的SvgIcon是不是自己封装的,如果是的话,建议直接用Element Plus推荐的方式引入SVG图标。具体来说,你可以通过安装
@element-plus/icons-vue这个包,然后按需引入对应的图标组件,比如HomeFilled或者其他你需要的图标。如果你确实要用自定义的SVG图标,那就不用再用ElIcon了,直接用你自己的SvgIcon组件就好。ElIcon的设计初衷是为了配合官方图标的样式和行为,混用可能会导致冲突。
至于样式的问题,ElIcon内部会强制覆盖一些样式,比如颜色和大小,所以即使你写了红色或者2倍大小,可能被它的默认样式给干掉了。解决办法是用深度选择器来覆盖,比如在你的样式文件里写:
最后总结一下,要么就完全按照Element Plus的方式引入官方图标,要么就彻底用自己的SvgIcon,别混着用。这样能省不少麻烦。
ElIcon本身是为内置图标设计的,直接包裹自定义的SvgIcon可能会出问题。性能上我们也不想多加无意义的 DOM 层级。解决方法很简单,别用
ElIcon包裹SvgIcon,直接用SvgIcon就行了。如果你非要保留ElIcon的样式功能,可以自己扩展一个组件:这样写既能用
ElIcon的属性控制大小和颜色,又不会影响SvgIcon的显示。另外提醒一下,确保你的 SVG 图标有正确的
viewBox属性,否则可能会因为缩放问题看不到图标。这种坑我也踩过,烦死了。