<linearGradient gradientUnits="userSpaceOnUse" ...>
<svg class="inline-svg-icon" fill="url(#red-blue)"><use...>
по сути каждый элемент просто наследует этот атрибут fill. И по умолчанию градиент рисуется в границах элемента. Если же указать userSpaceOnUse, то градиент будет рисоваться в пределах текущего viewport.<svg viewBox="0 0 300 300" width="400">
<circle id="circle" r="30" cx="150" cy="150" />
<animate id="another" href="#circle"
attributeName="r"
values="30;50;30"
repeatCount="indefinite"
dur="3s"/>
<animate begin="another.begin" href="#circle"
attributeName="fill"
values="#000000;#ffe3e3;#000000"
repeatCount="indefinite"
dur="3s"/>
<animate begin="another.begin" href="#circle"
attributeName="cx"
values="150;180;150"
repeatCount="indefinite"
dur="3s"/>
</svg>
Ограничения
В целях безопасности, Gecko ограничивает некоторые возможности SVG когда он используется как картинка:
* Отключен JavaScript;
* Не загружаются внешние ресурсы (например картинки, стили), хотя их можно использовать, если добавить в виде data: URI
* […]
svg {
transform: translateZ(0);
}
transform: translateZ(0);
в .link svg
transform
форсирует округление границы картинки до пикселей и всё встаёт на свои места.