Оптимальнее было бы вынести в CSS. И когда скрываю на определенном разрешении первую картинку в коде, то следующие теряют градиент ( id="gradient" , потому что обозначенный первой картинкой, получается скрытым)- это на Мозилле так.
Александр: в начале html файла добавьте svg элемент в котором будут все def-ы и symbol-ы. Потом используйте их по id где угодно на странице — ничего не будет пропадать.
Вот в таком стиле: codepen.io/mudrenok/pen/xqzxoz?editors=1000 (тут мне нужны были только symbol)
Антон Мудренок: дело в том, что первые несколько SVG в меню находятся, которые скрываются. И из-за них другие перестают отображаться. В общем, делаю вывод, что в каждом нужно свой уникальный ID использовать, на один класс не завязать это все.
Александр: если вы никак вынести не можете заранее ваши градиенты и при это все удаляется то да, есть только вариант с js.
Аналогичная история и с CSS, вы же не можете налету файл стилей поменять. А что касается связки css/svg то вы можете использовать в svg все через class="и тут ваш css класс со стилями". Поэкспериментируйте, может вашу проблему получится так решить. Но что касается градиентов, то все всегда их делают в def-ах.