SVG-Anwendungen und Beispiele
Auf dieser Seite möchte ich SVG-Anwendungen betrachten, welche auf ein sinnvolles Zusammenspiel mit CSS, JavaScript und PHP aufbauen, und generell interessante Einsatzgebiete erwähnen:
SVG-DOM-Methoden:
Ausgehend vom W3C-DOM des SVG-Dokuments lassen sich Elemente, Attribute und Text-Inhalte ansprechen und verändern. Es lassen sich sogar neue Elemente erzeugen.
Die "document"-JavaScript-Methoden (wie getElementByID, addEventListener,... siehe "JavaScript") lassen sich grundsätzlich auch auf SVG-Elemente anwenden. Es gibt allerdings SVG-Besonderheiten. So wird bei einem Event-Funktionsaufruf "
evt
" als Parameter übermittelt. Weitere Unterschiede:Wichtige SVG-DOM-Methoden:
evt.target
: Ausgangspunkt des Ereignisses (das Event auslösende Element)evt.target.ownerDocument
: Der Dokumentknoten (<svg>)createElementNS("http://www.w3.org/2000/svg","Elementname")
: Neues SVG-Element erzeugen.getAttribute("Attribut")
: Attribut auslesen.setAttribute("Attribut","Wert")
: Neuen Wert für Attribut setzen.- SVG-spezifische Ereignisse:
onresize, onscroll, onzoom
bezogen auf das ganze SVG-Dokument.
onbegin, onend, onrepeat
bei Animationen.
Bei Klick auf eine Form oder den orangen Text werden die Attribute des angeklickten Elements angezeigt:
Hier kommt PHP ins Spiel. PHP liest Daten ein und erzeugt SVG-Codezeilen (inline oder als neue SVG-Datei) mit der gewünschten visuellen Darstellung der Daten.
Im folgenden Beispiel geschieht das folgendermassen:
![]() |
|
![]() |
Interaktive thematische Landkarten:
SVG eignet sich auch Bestens zur Darstellung von Landkarten, für die man je nach Bedarf verschiedene thematische Layer ein- und ausblenden, und verlustfrei hinein- und herauszoomen kann. Beim Darüberfahren mit Maus oder Finger kann man zusätzliche Informationen anzeigen lassen. Hier ein kleines einfaches Beispiel: (Code)
Laufende analoge Uhr:
Hier wird die aktuelle Zeit auf dem eigenen Rechner mit der Zeit auf dem Webserver verglichen. Zum Ablesen der Serverzeit wird PHP benutzt, für die lokale Zeit JavaScript, und beides wird in SVG-Uhren dargestellt: (Code)
Darstellung von komplexeren Bewegungen:
Komplexere Bewegungen (mit Beschleunigungen und Abbremsphasen) lassen sich durch mathematisch berechnete SVG-Animationen ziemlich exakt simulieren und darstellen. So wie hier vereinfacht Bewegungen der Sonne und der 4 sonnennächsten Planeten Merkur, Venus, Erde und Mars mit Zufallsgenerator (Berechnungen über PHP): (Code)
Spiele:
Mit SVG lassen sich auch Spiele generieren. Hier als Beispiel ein Tetris-Spiel. Die richtig zu platzierenden Formen werden über Javascript per Zufallsgenerator ausgewählt und dynamisch als neue SVG-Elemente erzeugt. Die Form wird jeweils zuerst im Vorschaufenster rechts angezeigt, und danach ins Hauptspielfenster fallen gelassen: (Code)
Es gibt viele weitere Anwendungsmöglichkeiten für SVG. Darunter ist die Darstellung von mathematischen Funktionen (z.B. Sinus- oder Cosinuskurven). Dazu gibt es ein Tutorial auf SELFHTML/SVG/Funktionsplotter.
Hier wird die aktuelle Zeit auf dem eigenen Rechner mit der Zeit auf dem Webserver verglichen. Zum Ablesen der Serverzeit wird PHP benutzt, für die lokale Zeit JavaScript, und beides wird in SVG-Uhren dargestellt: (Code)
Darstellung von komplexeren Bewegungen:
Komplexere Bewegungen (mit Beschleunigungen und Abbremsphasen) lassen sich durch mathematisch berechnete SVG-Animationen ziemlich exakt simulieren und darstellen. So wie hier vereinfacht Bewegungen der Sonne und der 4 sonnennächsten Planeten Merkur, Venus, Erde und Mars mit Zufallsgenerator (Berechnungen über PHP): (Code)
Spiele:
Mit SVG lassen sich auch Spiele generieren. Hier als Beispiel ein Tetris-Spiel. Die richtig zu platzierenden Formen werden über Javascript per Zufallsgenerator ausgewählt und dynamisch als neue SVG-Elemente erzeugt. Die Form wird jeweils zuerst im Vorschaufenster rechts angezeigt, und danach ins Hauptspielfenster fallen gelassen: (Code)
Es gibt viele weitere Anwendungsmöglichkeiten für SVG. Darunter ist die Darstellung von mathematischen Funktionen (z.B. Sinus- oder Cosinuskurven). Dazu gibt es ein Tutorial auf SELFHTML/SVG/Funktionsplotter.