SVG图片在WEB上有很多优势,非常小的体积,颜色可设置,内容对人还是算友好。最近遇到一个需求,就是动态改变SVG的颜色。这样<img src="logo.svg" />
这样的写法很难实现这种能。查询了很多方案,但都感觉很复杂。
最终我决定是用Vue组件化来实现这个功能。SVG直接嵌入HTML,组件颜色从父组件传入。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <template> <svg width="34px" height="34px" viewBox="0 0 34 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Page 1</title> <desc>Created with Sketch.</desc> <defs></defs> <g id="山脉圈" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> ... </g> </svg> </template> <script> module.exports = { props: ['mainColor'] } </script>
|
使用的时候直接<component main-color="#ffffff"></component>
即可。