SVG-спрайти
Як і звичайні png-спрайти, svg-спрайти - це сукупність окремих картинок в одному файлі.
На відміну від png-спрайтів svg-спрайти вставляються на веб-сторінку у HTML-код, а не у CSS у вигляді фонового зображення.
Для використання svg-спрайтів необхідно вставити куди-небудь у веб-сторінку svg-файл і сховати його. Наприклад, одразу після <body>:
<body>
<svg style="display: none;" ... >
...
</svg>
Іконки будуть використовувати простір імен SVG, тому обов'язково потрібно вказати xmlns та xmlns:xlink.
А ось vievBox у кожної іконки буде свій і для всього SVG він не потрібен.
Кожна іконка огортається в тег <symbol> з ідентифікатором та viewBox:
<svg
style="display: none;"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<symbol id="iconFb" viewBox="0 0 24 28">
<ellipse ... />
<path ... />
<path ... />
</symbol>
<symbol id="iconTw" viewBox="0 0 25 26">
<path ... />
</symbol>
</svg>
Для вставки іконок використовуємо тег <use>:
<svg width="60" height="60">
<use xlink:href="#iconFb" />
</svg>
<svg width="24" height="24" class="fb-small">
<use xlink:href="#iconFb" />
</svg>
<svg width="24" height="24">
<use xlink:href="#iconTw" />
</svg>
Проте, така вставка іконок не дозволить використовувати CSS для зміни кольорів заливки, ліній і т.п., а також не дасть можливості взаємодіяти з JS.
Якщо вам потрібен повний контроль над іконками і картинками з svg-спрайта - їх доведеться вставляти в HTML-код повністю, можна оптимізувати процес за допомогою JS:
<i class="svg-icon iconFb"></i>
<i class="svg-icon iconTw"></i>
<i class="svg-icon iconIg"></i>