Ich habe versucht, meine SVG-Symbole in eine Datei zu externalisieren und sie mit Markup wie zu referenzieren <svg><use xlink:href="file.svg#icon" /></svg>
. Theoretisch funktioniert das sehr gut, aber verschiedene Browser haben Probleme mit dem Rendern. Alle Browser sind in der Lage, das SVG korrekt darzustellen, wenn auf das Symbol mit verwiesen wird <use>
innerhalb der Datei und öffnen Sie die URL der SVG-Datei direkt.
Kurz gesagt, gibt es eine browserübergreifende Möglichkeit, SVG zu erhalten linearGradient
s arbeiten als Füllungen für Elemente, wenn auf die Symbole mit verwiesen wird <svg><use/></svg>
im Markup?
Ich habe einen Plunker eingerichtet, der das Problem demonstriert:
http://plnkr.co/edit/feKvZ7?p=preview
Vereinfacht sieht das Markup wie folgt aus:
<!DOCTYPE html>
<html>
<body>
<h1>SVG sprite test</h1>
<svg width="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<use xlink:href="icon.svg#icon" />
</svg>
</body>
</html>
Und die SVG-Datei sieht so aus:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<linearGradient id="gradient">
<stop offset="0" stop-color="black" />
<stop offset="1" stop-color="white" />
</linearGradient>
</defs>
<symbol id="icon" viewBox="0 0 100 100">
<circle cx="50" cy="50" r="40" stroke="black" fill="url(#gradient)" />
</symbol>
<use id="iconuse" xlink:href="#icon" width="100" height="100" />
</svg>
Es ist viele Jahre später … was machst du heutzutage?
– Nick Darvey
20. Oktober 2020 um 13:47 Uhr
@NickDarvey eine gute Frage. Ich habe diesen Ansatz aufgegeben und verwende heutzutage Dinge wie svgr: github.com/gregberge/svgr. Könnte aber ein interessanter Zeitpunkt für einen erneuten Besuch sein. Bei einem kurzen Blick auf Plunkr gibt es immer noch Unterschiede zwischen den Browsern, wie sie die verschiedenen SVGs rendern.
– RJo
28. Oktober 2020 um 11:35 Uhr