Не работает анимация градиента в svg в Safari. В чем ошибка в коде?

Проблема с анимацией градиента в SVG в Safari может возникать из-за того, что Safari не всегда правильно интерпретирует определение градиента внутри стиля fill или stroke. Для решения этой проблемы с анимацией градиента в Safari, рекомендуется использовать SVG <animate> элемент для анимации градиента.

Пример кода с анимацией градиента в SVG с использованием <animate> элемента:

<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <rect width="100" height="100" fill="url(#grad)">
    <animate attributeName="x1" values="0%;100%" dur="4s" repeatCount="indefinite" />
    <animate attributeName="x2" values="100%;200%" dur="4s" repeatCount="indefinite" />
  </rect>
</svg>

В этом примере мы создаем линейный градиент с идентификатором "grad" и двумя стоп-цветами. Затем мы создаем прямоугольник и используем fill="url(#grad)" для применения градиента к прямоугольнику. Далее мы добавляем анимацию с помощью <animate> элемента для изменения координат x1 и x2 линейного градиента, создавая эффект движения градиента по прямоугольнику.

Такой подход позволяет обойти проблему с анимацией градиента в Safari, используя SVG анимацию вместо CSS анимации.

Надеюсь, это поможет вам решить проблему с анимацией градиента в SVG в Safari. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться!