SVG を XHTML に埋め込む メモ
Firefox2 にて確認。
<?xml version='1.0'?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg"> <head><title>SVG埋め込みテスト</title></head> <body> <h1>SVG埋め込みテスト</h1> <!-- デフォルト名前空間使用 --> <p>赤い四角→ <svg:svg width="10" height="10"> <svg:rect x="0" y="0" width="10" height="10" fill="red"/> </svg:svg> </p> <!-- 名前空間を個別に宣言 --> <p>青い丸→ <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"> <circle cx="5" cy="5" r="5" fill="blue"/> </svg> </p> </body> </html>
MIMEタイプが application/xhtml+xml でないと XML として処理されないので注意。
参考:http://developer.mozilla.org/ja/docs/SVG:Namespaces_Crash_Course
JavaScript で SVG を XHTML に動的に埋め込む方法メモ
/* svg要素を作成 */ var canvas = document.createElementNS("http://www.w3.org/2000/svg", "svg:svg"); canvas.setAttribute("id", "canvas"); canvas.setAttribute("width", "100"); canvas.setAttribute("height", "100"); canvas.setAttribute("viewBox", "0 0 100 100"); /* rect(四角形)要素を作成 */ var rect = document.createElementNS("http://www.w3.org/2000/svg", "svg:rect"); rect.setAttribute("x", "0"); rect.setAttribute("y", "0"); rect.setAttribute("width", "100"); rect.setAttribute("height", "100"); rect.setAttribute("fill", "url(#fade)"); canvas.appendChild(rect); // canvas に rect を append /* svg要素をドキュメントに追加 */ document.body.appendChild(canvas);
createElement() ではなく createElementNS() を使用することに注意。