2014-04-02 80 views
2

有人能告訴我爲什麼這個文檔在Chrome上沒有畫圓圈嗎?如何在xhtml文檔中使用svg命名空間

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg"> 
<head></head> 
<body> 
    <svg:svg width="100" height="100"> 
    <svg:circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" /> 
    </svg:svg> 
</body> 
</html> 
+3

適用於我,如果命名* .xhtml。如果在Web服務器上無法正常工作,請檢查文檔是否帶有xml mimetype。 –

+0

同樣在這裏。適用於XHTML文件,但不適用於HTML文件。與Mozilla同上。 –

回答

5

HTML到HTML5之前的SVG和不支持<svg>元件。和所有的HTML一樣,HTML5不支持名稱空間,因此它不理解名稱空間前綴。對於一個HTML解析器,元件
<svg:svg xmlns:svg="http://www.w3.org/2000/svg">
具有比
<svg xmlns="http://www.w3.org/2000/svg">
不同元素名稱,這就是爲什麼HTML(5)僅支持聯SVG代碼字面svg元素名稱。

您的解決方案是將頁面作爲XHTML提供,因此它將作爲XML進行處理,從而可以識別名稱空間,或者您需要在<svg>元素上爲svg名稱空間添加默認名稱空間聲明(如上面我的後一個示例)然後你可以刪除svg命名空間前綴,同時繼續使用svg命名空間。

0

調整了代碼,除去從圓 http://jsfiddle.net/CLEZc/1/

<svg width="100" height="100"> 
    <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" /> 
</svg> 
+0

謝謝,但我想繼續使用svg命名空間。我知道它有效,但我找不到我的錯誤... – Charles