Как, вероятно, отобразить линейный градиент в HTML из SVG <symbol>
?Я попробовал следующее, но как-то это работает только в FireFox (версия 63).В Chrome и Safari он не загружал градиент.Что я делаю неправильно, это ошибка или есть «обходной путь» для этого?
Проверка W3 не показывает ошибок для следующего кода:
<!DOCTYPE html>
<html>
<head>
<title>Gradient Problem</title>
<meta charset="UTF-8" />
</head>
<body style="margin:0;overflow:hidden">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="0" height="0" style="display:block">
<defs>
<linearGradient id="grad1" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#AE1C28" />
<stop offset="30%" style="stop-color:#AE1C28" />
<stop offset="40%" style="stop-color:#FFFFFF" />
<stop offset="60%" style="stop-color:#FFFFFF" />
<stop offset="70%" style="stop-color:#21468B" />
<stop offset="100%" style="stop-color:#21468B" />
</linearGradient>
</defs>
<symbol id="logo" viewbox="0 0 100 100" preserveAspectRatio="none">
<rect width="100%" height="100%" x="0" y="0" fill="url(#grad1)" />
</symbol>
</svg>
<svg style="width:100vw;height:100vh">
<use xlink:href="#logo"></use>
</svg>
</body>
</html>
Взгляните на этот пример , где я пытаюсь разобраться во всех случаях использования включения символа svg через <use>
.
Обновление:
Хм, странно, похоже, что он работает в Chrome, когда SVG находится в HTML.Однако, когда файл находится во внешнем файле (как показано в примере codesandbox), градиенты не будут отображаться.Я думаю, это проблема с <use>
?