Vue开源:vue-svgicon - 一个生成 svg 图标组件的工具
djjuswkbe
8年前
<h2>vue-svgicon</h2> <p>A tool to create svg icon components. (vue 2.x)</p> <h2>Inspiration</h2> <p><a href="/misc/goto?guid=4959740309497843767" rel="nofollow,noindex">https://github.com/Justineo/vue-awesome</a></p> <h2>demo</h2> <p><a href="/misc/goto?guid=4959740309574820836" rel="nofollow,noindex">https://mmf-fe.github.io/vue-svgicon/</a></p> <h2>Usage</h2> <h3>Generate icon</h3> <p>Install</p> <pre> <code class="language-javascript"># install global npm install vue-svgicon -g # install for project npm install vue-svgicon --save-dev</code></pre> <p>Command</p> <pre> <code class="language-javascript"># generate svg icon components vsvg -s /path/to/svg/source -t /path/for/generated/components</code></pre> <p>Use as npm scripts</p> <pre> <code class="language-javascript">{ "scripts": { "svg": "vsvg -s ./static/svg/src -t ./src/icons" } }</code></pre> <pre> <code class="language-javascript"># bash npm run svg</code></pre> <h3>Use generated icon</h3> <p>Use plugin</p> <pre> <code class="language-javascript">// main.js import Vue from 'vue' import App from './App.vue' import svgicon from 'vue-svgicon' // Default tag name is 'svgicon' Vue.use(svgicon, { tagName: 'svgicon' }) new Vue({ el: '#app', render: h => h(App) })</code></pre> <p>Use icon in component</p> <pre> <code class="language-javascript"><!-- App.vue --> <template> <div id="app"> <p> <svgicon icon="vue" width="200" height="200" color="#42b983 #35495e"></svgicon> </p> </div> </template> <script> import 'icons/vue' export default { name: 'app', data () { return { msg: 'Welcome to Your Vue.js App', } } } </script></code></pre> <p>You can import all icons at once</p> <pre> <code class="language-javascript">import 'icons'</code></pre> <h2>Props</h2> <h3>icon</h3> <p>icon name</p> <pre> <code class="language-javascript"><svgicon icon="vue"></svgicon></code></pre> <h3>dir</h3> <p>The direction of icon. Default value is <strong>right</strong></p> <pre> <code class="language-javascript"><svgicon icon="arrow" width="50" height="50" dir="left"></svgicon> <svgicon icon="arrow" width="50" height="50" dir="up"></svgicon> <svgicon icon="arrow" width="50" height="50"></svgicon> <svgicon icon="arrow" width="50" height="50" dir="down"></svgicon></code></pre> <h3>fill</h3> <p>Whether to fill the path/shape. Default value is <strong>true</strong></p> <pre> <code class="language-javascript"><svgicon icon="arrow" width="50" height="50"></svgicon> <svgicon icon="arrow" width="50" height="50" :fill="false"></svgicon></code></pre> <p>You can use <strong>r-color</strong> to reverse the fill property</p> <pre> <code class="language-javascript"><!-- the first one is fill(default), the second use stroke --> <svgicon icon="clock" color="#8A99B2 r-#1C2330" width="100" height="100"></svgicon> <!-- the first one is stoke, the second is fill --> <svgicon icon="clock" color="#8A99B2 r-#1C2330" width="100" height="100" :fill="false"></svgicon></code></pre> <h3>width / height</h3> <p>Specify the size of icon. Default value is <strong>16px / 16px</strong> . Default unit is <strong>px</strong></p> <pre> <code class="language-javascript"><svgicon icon="arrow" width="50" height="50"></svgicon> <svgicon icon="arrow" width="10em" height="10em"></svgicon></code></pre> <h3>Color</h3> <p>Specify the color of icon. Default value is <strong>inherit</strong> .</p> <pre> <code class="language-javascript"><p style="color: darkorange"> <svgicon icon="arrow" width="50" height="50"></svgicon> <svgicon icon="arrow" width="50" height="50" color="red"></svgicon> <svgicon icon="arrow" width="50" height="50" color="green"></svgicon> <svgicon icon="arrow" width="50" height="50" color="blue"></svgicon> </p></code></pre> <p>If the icon is mutil path/shape, you can use mutil color. It is defined in the order of path/shape.</p> <pre> <code class="language-javascript"><svgicon icon="vue" width="100" height="100" color="#42b983 #35495e"></svgicon></code></pre> <p>Also, you can use css to add colors.</p> <pre> <code class="language-javascript"><svgicon class="vue-icon" icon="vue" width="100" height="100"></svgicon></code></pre> <pre> <code class="language-javascript">.vue-icon path[pid="0"] { fill: #42b983 } .vue-icon path[pid="1"] { fill: #35495e }</code></pre> <p>You can't use this feature in scoped block.</p> <p>Use gradient</p> <pre> <code class="language-javascript"><template> <svg> <defs> <linearGradient id="gradient-1" x1="0" y1="0" x2="0" y2="1"> <stop offset="5%" stop-color="#57f0c2"/> <stop offset="95%" stop-color="#147d58"/> </linearGradient> <linearGradient id="gradient-2" x1="0" y1="0" x2="0" y2="1"> <stop offset="5%" stop-color="#7295c2"/> <stop offset="95%" stop-color="#252e3d"/> </linearGradient> </defs> </svg> <svgicon icon="vue" width="15rem" height="15rem" color="url(#gradient-1) url(#gradient-2)"></svgicon> </template></code></pre> <p> </p>