2010-07-03 5 views
9

Kann man mit Raphael ein eingebettetes SVG-Bild manipulieren? Ich habe Raffael in der Vergangenheit benutzt, um Formen zu zeichnen, habe aber nicht gesehen, dass es benutzt wird, um ein existierendes SVG-Bild zu manipulieren. Wenn nicht, gibt es sonst noch etwas, das es mir erlaubt, Farben, Polygone eines eingebetteten SVG-Bildes einfach zu ändern, Ereignisse hinzuzufügen usw.?Verwende Raphael, um SVG zu manipulieren

Antwort

0

Komisch, gestern fand ich die glitchsvgicons Seite dabei.
Obwohl auf eine sehr primitive Weise, nur mit einem Regex Ersetzen von Teilen.
Es kann jedoch Hinweis sein: offenbar können Sie gute alte Suche/Ersetzen von Textteilen auf SVG-Symbolen verwenden. Aber es ist anfälliger für Probleme als mit einem echten Dom Baum ...

+0

Nach dem Mangel an Antworten denke ich, gibt es keine Möglichkeit, Raphael zu verwenden, um dies zu tun. Ich denke, ich bleibe bei jquery, um den DOM-Baum zu manipulieren. – Max

4

Aus meiner Erfahrung beim Lesen der Raphael.js Quelle, muss ich vorherigen Posts zustimmen. Die einzige Möglichkeit, das SVG zu ersetzen oder zu ändern, besteht darin, das Markup/DOM selbst zu ersetzen/zu modifizieren.

Alles, was ich in meiner Antwort hinzufügen möchte, ist eine kurze, allgemeine Erklärung von warum das ist so. Raphael ist als SVG/VML Generator konzipiert. Das heißt, Raphael erstellt JavaScript-Objekte und hängt ihr entsprechendes SVG/VML-Markup an das DOM an, wenn sie erstellt werden. Die Objekte haben viele zusätzliche Eigenschaften, die sie innerhalb des Raphael-Frameworks arbeiten lassen.

Es kann möglich sein, ein Plugin zu schreiben, das ein Raphael-Objekt um ein SVG-Element bauen kann, indem man seine Eigenschaften liest, aber ich vermute, dass ein solches Objekt nicht alle Informationen hat, die es braucht, um mit den anderen Raphael-Objekten zu koexistieren . Sicherlich existiert derzeit keine solche Parsing/Rekonstruktions-Funktionalität.

+0

die Raphael-Dokumentation über den 'Ninja' Modus unterstützt Ihre Bemerkungen. der Raphael 'Ninja' Modus entfernt das globale Raphael Objekt, aber die Dokumentation zeigt an, dass der 'Ninja' Modus verhindern könnte, dass Plugins funktionieren, da sie auf den globalen Raphael Obj [Link] (http://raphaeljs.com/reference.html) zugreifen müssen # Raphael.ninja) –

+0

Ninja-Modus hat nichts mit meiner Antwort zu tun. Ich beziehe mich nicht auf das globale Raphael-Objekt, sondern auf die einzelnen Objekte, die den SVG-Elementen entsprechen, die von Raphael erstellt wurden. – myw01