SVG icons
SVG symbols
- Just like Illustrator there can be symbols in SVG
- We can create a symbol library—a sprite sheet
- And use the symbols many times in our website
Makes for a great icon sets
Using SVG for icons
- Icons can be at the top of the HTML
or - Icons can be in a separate file
A separate file is usually better for performance & maintenance because it can be shared, edited and reused.
HTML
<!-- At the top of the HTML -->
<svg hidden>
<symbol id="the-circle" viewBox="0 0 48 48">
<circle cx="24" cy="24" r="22" fill="tomato" />
</symbol>
<symbol id="the-triangle" viewBox="0 0 48 48">
<polygon points="24,2 46,46 2,46" fill="yellowgreen" />
</symbol>
</svg>
<!-- Further down the HTML -->
<i class="icon i-128">
<svg><use xlink:href="#the-triangle"></use></svg>
</i>
<i class="icon i-128">
<svg><use xlink:href="#the-circle"></use></svg>
</i>
<i class="icon i-24">
<svg><use xlink:href="#the-triangle"></use></svg>
</i>
HTML
<!-- Icons in a separate sprite sheet -->
<i class="icon i-96">
<svg><use xlink:href="images/icons.svg#the-circle"></use></svg>
</i>
<i class="icon i-128">
<svg><use xlink:href="images/icons.svg#the-triangle"></use></svg>
</i>
<i class="icon i-48">
<svg><use xlink:href="images/icons.svg#the-circle"></use></svg>
</i>
HTML
<!-- No `fill` attributes in the symbol -->
<svg hidden>
<symbol id="the-circle" viewBox="0 0 48 48">
<circle cx="24" cy="24" r="22" />
</symbol>
</svg>
<i class="icon i-128">
<svg><use xlink:href="#the-circle"></use></svg>
</i>
CSS .icon {
color: tomato;
transition: all .25s linear;
}
.icon:hover {
color: orange;
}

Use Spritebot to combine different SVG graphics into a sprite sheet