SVG-Pfade in HTML exportieren, um sie mit JavaScript zu animieren

Ich habe einen komplexen Bauplan, den ich in Inkscape nachgezeichnet habe. Ich werde den Pfad programmgesteuert animieren und auch einige andere Effekte mit JavaScript hinzufügen. Ich kann die Datei mit HTML einbinden (z. B. <img src="filename.svg"/>), aber wie bearbeite ich dann jeden Pfad in dieser SVG-Datei?

Bisher habe ich die Werte manuell durch Kopieren und Einfügen (z. B. <svg><path d="x,y x,y x,y..."/>) in HTML übertragen. Ich kann dann jedem Pfad IDs und Klassen zuweisen und diese IDs und Klassen verwenden, um die Pfade mit JavaScript zu manipulieren, aber es ist extrem zeitaufwendig. Dafür muss es einen besseren und schnelleren Weg geben.

Ich habe überall gesucht und konnte nur Anweisungen zum Exportieren von Pfaden mit Python finden, das ich auf diesem Windows-System nicht installiert habe.

Gibt es Möglichkeiten, dies nativ in Inkscape zu tun? Oder andere Möglichkeiten, die Ihnen bekannt sind?

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Antworten (1)

Wenn Sie von Ihrem HTML aus auf das SVG zugreifen möchten (z. B. um mit JavaScript zu animieren oder mit CSS zu stylen), müssen Sie das SVG inline verwenden (wie beim Einfügen des rohen SVG-Codes in das HTML), wenn Sie Ihr SVG mit verwenden B. ein <img>Tag oder als CSS-Hintergrundbild, können Sie von Ihrem HTML-Dokument aus nicht auf das DOM des SVG zugreifen.

Wenn Sie eine serverseitige Sprache wie PHP verwenden, können Sie Ihre Datei am einfachsten einbinden, indem Sie den Inhalt der Datei einbinden. etwas wie:

<?php echo file_get_contents("my_svg.svg"); ?>

Dadurch wird der Inhalt der SVG-Datei buchstäblich im HTML-Code gedruckt, im Gegensatz zur Verwendung eines <img>Tags, das das Bild einfach rendert.

Wenn Sie ausschließlich mit HTML arbeiten, müssen Sie den SVG-Code kopieren und in Ihren HTML-Code einfügen, aber Sie können das gesamtepath SVG kopieren und einfügen, ohne dass Sie bestimmte Attribute oder ähnliches abrufen müssen . Da SVG einfach XML ist, können Sie die Datei in einem Texteditor (z. B. Notepad oder TextEdit) oder Ihrem HTML-Editor öffnen und den Code abrufen.

Inkscape hat einen XML-Editor , der für Sie nützlich sein könnte, ich bin mir jedoch nicht sicher, ob Sie den gesamten Code von dort kopieren können. Es ist auch erwähnenswert, dass Inkscape standardmäßig Dateien als eigenen SVG-Typ mit einigen Inkscape-spezifischen Tags und Befehlen speichert (sie haben einen angemessenen Namensraum, sodass dies kein Problem verursachen sollte, aber Sie wissen nie), sodass es möglicherweise besser ist, sie zu speichern Ihre Datei als einfaches SVG .

Sie können mehr über die Verwendung von SVG (und den Zugriff auf SVG mit externem JavaScript und CSS) in diesem CSS-Tricks-Artikel lesen (ich habe auf den relevanten Teil des Artikels verlinkt):

Und eine verwandte Frage zu Stack Overflow:

ok, mal sehen ob ich das richtig verstehe. Mit dieser PHP-Funktion kann ich die Liste der Knoten im Browser ausdrucken und dann einfach alle kopieren und einfügen?!?!
Nein, es ist nicht nötig, irgendetwas zu kopieren/einzufügen, Sie verwenden das buchstäblich in Ihrer Datei (vorausgesetzt, Ihre Website verwendet PHP).
Wie würde ich vorgehen, um die gesamte SVG-Datei zu kopieren und einzufügen? Was ich getan habe, ist, jeden Knoten nacheinander auszuwählen und die X- und Y-Positionen der Knoten zu kopieren. Ich gehe ins Bett, aber ich melde mich morgen wieder
in Bezug auf Ihre Antwort, aber Sie sagten, dass ich SVG inline verwenden müsste ...?
Dieses PHP druckt das SVG buchstäblich in den HTML-Code, sodass es inline ist . Oder Sie kopieren/fügen direkt in Ihr HTML ein, öffnen einfach das SVG in einem Texteditor (z. B. Notepad), wählen alle aus, kopieren, einfügen. Es müssen keine einzelnen Knoten kopiert werden.
@ user2230470 drücke strg+a, dann strg+c und strg+v?
Re: Einfaches SVG vs. Inkscape SVG, Inkscape fügt alle nicht standardmäßigen Informationen in den inkscapeNamensraum ein, was vollkommen gültiges SVG ist. Die meisten Anwendungen (und Browser) haben damit keine Probleme und ignorieren es. Einfaches SVG entfernt all diese zusätzlichen Informationen und wird normalerweise nur benötigt, wenn eine Anwendung nicht gut mit dem zusätzlichen Namespace spielt.
@Cai Danke. Ich wusste nicht, dass Sie auf den Inhalt der Datei zugreifen können, indem Sie sie in einem Texteditor öffnen. Fügen Sie das Ihrer Antwort hinzu und ich wähle es als Antwort aus
Inkscape hat einen XML-Viewer, in der Symbolleiste, bei mir das 4. von rechts, ein Fenstersymbol mit <> darin, wo man XML-Knoten einzeln anzeigen kann. Vielleicht bequem für Sie. Der Teil des Bildes wird synchron markiert.