问题:如下图所示,svg格式的奖牌图形未显示完整
![](https://img.haomeiwen.com/i6166172/0a1e82c3413d60fc.png)
![](https://img.haomeiwen.com/i6166172/99710f0af7560682.png)
定位:查看svg源码,发现svg部分未显示
![](https://img.haomeiwen.com/i6166172/3eac3a623fd68495.png)
原因:此前为了实现底部导航图标的复用,全局重置了path的fill属性
![](https://img.haomeiwen.com/i6166172/b0b277a148e4d453.png)
解决:给底部导航图标的样式重置加作用域限制
![](https://img.haomeiwen.com/i6166172/c7301716a6d432de.png)
结论:当遇到SVG图形未显示完整时,请排查是否有样式冲突
【用SVG格式的原因】
1、不用做N倍切图,自适应大小不模糊
2、图标可以复用,减小文件大小
3、可以快速承接设计稿(设计师已经将设计稿共享在zplin上,相应的icon已经切好,直接下载可用)
【复用场景】页面底部导航栏的选中与否,差别只有颜色不一样
![](https://img.haomeiwen.com/i6166172/5a4f947166824930.png)
【复用技术方案】
1、用webpack的svg-sprite-loader将同一个文件夹下全部图标的svg文件生成symbol元素,如下图:
![](https://img.haomeiwen.com/i6166172/3968c8cd9289b713.png)
2、使用svg的use元素引用symbol元素
![](https://img.haomeiwen.com/i6166172/5d5d0c4f0b2d19f3.png)
![](https://img.haomeiwen.com/i6166172/01c8b75c67d45c10.png)
![](https://img.haomeiwen.com/i6166172/5a4f947166824930.png)
【复用与否的差别】
1、需要的文件数
![](https://img.haomeiwen.com/i6166172/348147c34f0a4034.png)
![](https://img.haomeiwen.com/i6166172/be75c67af8375a5f.png)
2、元素节点数
![](https://img.haomeiwen.com/i6166172/5af2236a95d22cb8.png)
![](https://img.haomeiwen.com/i6166172/3968c8cd9289b713.png)
网友评论