樣式沖突造成svg圖標顯示不完整

問題:如下圖所示,svg格式的獎牌圖形未顯示完整

有誤的樣式
設計原稿


定位:查看svg源碼,發現svg部分未顯示

svg代碼

原因:此前為了實現底部導航圖標的復用,全局重置了path的fill屬性

全局重置

解決:給底部導航圖標的樣式重置加作用域限制

加了作用域限制的樣式重置

結論:當遇到SVG圖形未顯示完整時,請排查是否有樣式沖突


【用SVG格式的原因】

1、不用做N倍切圖,自適應大小不模糊

2、圖標可以復用,減小文件大小

3、可以快速承接設計稿(設計師已經將設計稿共享在zplin上,相應的icon已經切好,直接下載可用)

【復用場景】頁面底部導航欄的選中與否,差別只有顏色不一樣

底部導航欄


【復用技術方案】

1、用webpack的svg-sprite-loader將同一個文件夾下全部圖標的svg文件生成symbol元素,如下圖:

經svg-sprite-loader生成的symbols

2、使用svg的use元素引用symbol元素

使用use引用symbol

CSS代碼

最終效果

【復用與否的差別】

1、需要的文件數

未復用
復用后

2、元素節點數

未復用

復用后
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,136評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,223評論 4 61
  • 午睡時做了一個短小的夢。 我夢見大片大片的麥田地,麥苗青蔥旺盛。 麥田旁邊有新建的超市,還有新的樓房在建。寬敞嶄新...
    初夏的時光閱讀 285評論 4 5
  • 年少且聽李宗盛,且聽且懂 01 開始聽李宗盛的歌,還是在我大三準備考研的時候。 為了能夠把自己的注意力長時間集中在...
    陌上于歸閱讀 654評論 2 9
  • J2SE基礎 九種基本數據類型的大小,以及他們的封裝類。Java基本類型共有八種,基本類型可以分為三類,字符類型c...
    Sky_walker閱讀 268評論 0 2