{"id":580,"date":"2011-10-11T16:37:34","date_gmt":"2011-10-11T14:37:34","guid":{"rendered":"https:\/\/sgaul.de\/?p=580"},"modified":"2014-03-13T21:34:54","modified_gmt":"2014-03-13T20:34:54","slug":"canvas-das-ende-von-svg","status":"publish","type":"post","link":"https:\/\/sgaul.de\/2011\/10\/11\/canvas-das-ende-von-svg\/","title":{"rendered":"Canvas: Das Ende von SVG?"},"content":{"rendered":"
Um Webinhalte nicht immer nur trist als Text erscheinen zu lassen, haben sich Bilder recht gut bew\u00e4hrt: Diagramme und Schaubilder helfen dem Nutzer einen \u00dcberblick zu bekommen. Bisher wurden allerdings meist konventionelle Rastergrafiken verwendet, die einige Nachteile haben. Will man hiervon weg, stellt sich aber gleich die n\u00e4chste Frage: Das neue HTML-5-Element Canvas oder das etwas \u00e4ltere SVG?<\/p>\n
In der Tat sind Rastergrafiken wie PNG eine denkbar schlechte Wahl. Sie skalieren bekanntlich absolut schlecht und sehen in jeder au\u00dfer der Originalgr\u00f6\u00dfe schlecht aus (selbst das herunterskalieren im Browser f\u00fchrt oft zu schrecklichen Resultaten).<\/p>\n
Der wesentliche Punkt ist aber, dass die Textinhalte nicht mehr als solche vorliegen, was diverse Konsequenzen hat, die vor allem darauf beruhen, dass sie nicht mehr automatisch ausgelesen werden k\u00f6nnen:<\/p>\n
Im allgemeinen HTML-5-Hype h\u00f6rt man von SVG fast gar nichts mehr: Canvas soll das browserinterne Zeichnen revolutionieren.<\/p>\n
<\/p>\n
Das Canvas-Element kann einfach leer im Browser definiert werden, anschlie\u00dfend darf man mit Javascript darin herumzeichnen.<\/p>\n
Hiermit \u00fcbernimmt Canvas aber die Probleme der Rastergrafiken. Da die Inhalte erst dynamisch eingef\u00fcgt werden und somit auch die relevanten Texte nur im Javascript-Code stehen, gehen die Vorteile der \u201elesbaren\u201c Bilder verloren.<\/p>\n
Hier kann SVG punkten: Die Vektorgrafiken werden direkt als XML-Markup in den Quelltext integriert oder extern referenziert. So sind auch alle relevanten Suchbegriffe maschinenlesbar.<\/p>\n
Eine praktikable L\u00f6sung ist es, die Inhalte f\u00fcr das Canvas in einfachem HTML zu notieren. Eine Mindmap w\u00e4re dann nichts anderes als eine Verschachtelung von <ul>- und <ol>-Elementen. Anschlie\u00dfend k\u00f6nnte man f\u00fcr menschliche Betrachter mittels Javascript diesen Inhalt durch ein Canvas ersetzen, welches seine Daten aus eben diesem Code generiert. \u00c4ltere Browser, die Canvas nicht unterst\u00fctzen, zeigen einfach das HTML an und bieten somit ein angemessenes Fallback-Verhalten. Allerdings kann man auf die gleiche Weise auch SVG dynamisch erzeugen. Genau genommen erlaubt es diese L\u00f6sung sogar, Rastergrafiken maschinenlesbar zu machen.<\/p>\n
Wenn man es auf diese Art umsetzt, steht Canvas SVG hier in nichts nach. Ist es allerdings nicht m\u00f6glich, da man komplexe Grafiken<\/a> erzeugen will, die sich nicht automatisch generieren lassen, ist SVG hier im Vorteil.<\/p>\n Dieser Punkt ist schwer zu bewerten. Alle neuen Browser unterst\u00fctzen beide Formate. Beim Internet Explorer, also dem einzigen, bei dem man wirklich \u00e4ltere Versionen beachten m\u00fcsste, sieht es f\u00fcr beide mau aus. Vor dem 9er ist nicht viel zu erwarten (selber der IE 8 kann beides gar nicht). Allerdings gibt es hierf\u00fcr Plugins und zur Not kann eben das zuvor angesprochene HTML-Fallback helfen.<\/p>\nBrowserunterst\u00fctzung<\/h3>\n
Erzeugung<\/h3>\n