我正在创建一个SVG。 SVG标签看起来像这样:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800">
如果我用简单的<svg width="800" height="800">
标记替换它,则该文档为空白。在Chrome中,如果我带走上层代码而不是XMLNS,它就可以使用。在IE11中,只要我带走任何东西(DOCTYPE,XMLNS,PUBLIC ......),文档就是空白的。为什么我需要这么复杂的元素?
答案 0 :(得分:1)
SVG文件是XML文件。因此,当它们是独立文件时,它们需要某种预先转码,以便无论解析它知道该做什么。因此,独立的SVG文件至少需要具有xmlns属性。浏览器要求。但是,除非您要进行正确的XML验证,否则不需要DocType。
当在HTML页面的主体中内联SVG时,您也不需要。 HTML解析器知道SVG内容并知道该怎么做。
答案 1 :(得分:0)
他们不需要。诀窍是你需要使用mime类型的text / html而不是image / svg + xml(或任何其他XML mime类型)。
<!doctype html>
<svg width="500" height="350">
<circle id="orange-circle" r="30" cx="50" cy="50" fill="orange" />
</svg>
&#13;
如果您使用XML mime类型,那么XML支持名称空间,您必须定义它们,因此需要xmlns属性来区分<a>
是带有src属性的html <a>
还是SVG带有xlink:href属性的<a>
元素。 HTML只是神奇地猜到了。