在我在互联网上看到的大约一半的svg示例中,代码都被简单的<svg></svg>标签包装。
另一方面,svg标签有很多复杂的属性,比如:
<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink">
我的问题是:是否可以使用简单的svg标记?我已经尝试过一些复杂的,如果我不包括它们,在我这边一切都很好。
在我在互联网上看到的大约一半的svg示例中,代码都被简单的<svg></svg>标签包装。
另一方面,svg标签有很多复杂的属性,比如:
<svg
xmlns="http://www.w3.org/2000/svg"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink">
我的问题是:是否可以使用简单的svg标记?我已经尝试过一些复杂的,如果我不包括它们,在我这边一切都很好。
当前回答
xmlns="http://www.w3.org/2000/svg"属性是:
image/svg+xml文件。1 内联<svg>可选。2
xmlns:xlink="http://www.w3.org/1999/xlink"属性是:
image/svg+xml文件需要xlink:属性。1 可选的内联<svg>与xlink: attributes。2
version="1.1"属性是:
建议符合image/svg+xml文件标准。3. 显然被每个用户代理忽略了。4 在SVG 2中删除。5
国际化资源标识符(RFC3987) 2自HTML5以来 3 XML (Extensible Markup Language) 1.0 4可能要等到更多主要版本的发布。 5 SVG 2, W3C候选推荐,2018年8月7日
其他回答
关于SVG的版本属性MDN WebDoc说
Deprecated since SVG 2 This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time. The version attribute is used to indicate what specification a SVG document conforms to. It is only allowed on the root element. It is purely advisory and has no influence on rendering or processing.
PS: SVG 2还远没有成为标准。
我想对两个答案都加一点,但是我没有点,我在加一个新的答案。 在最近对Chrome(版本63.0.3239.132(官方版本)(64位Windows)的测试中,我发现:
For inline SVG that is directly entered into the HTML file, via text editor or javascript and elm.innerHTML, the xmlns attributes are not necessary, as stated in the other two answers. But for inline SVG that is loaded via javascript and AJAX, there are two options: Use xhr.responseText and elm.innerHTML. This does not require the xmlns. Use xhr.responseXML.documentElement and elm.appendChild() or elm.insertBefore(). This method of creating the inline SVG produces half-baked results without the basic SVG namespace being declared, as in xmlns="http://www.w3.org/2000/svg". The <svg> loads into the HTML, but document-level functions, such as getElementById() are not recognized on the <svg> element. I assume that this is because it uses the XMLHttpRequest XML parser outside of the HTML.
所有用户代理(浏览器)都会忽略版本属性,所以您总是可以删除它。
如果将SVG内联嵌入到HTML页面中,并将该页面作为text/ HTML提供,则不需要xmlns属性。在HTML文档中嵌入SVG是最近才出现的创新,是HTML5的一部分。
但是,如果您将页面作为image/svg+xml或application/xhtml+xml或任何其他导致用户代理使用xml解析器的MIME类型提供,则需要xmlns属性。直到最近,这是唯一的方式,所以有很多内容都是这样提供的。
xmlns="http://www.w3.org/2000/svg"属性是:
image/svg+xml文件。1 内联<svg>可选。2
xmlns:xlink="http://www.w3.org/1999/xlink"属性是:
image/svg+xml文件需要xlink:属性。1 可选的内联<svg>与xlink: attributes。2
version="1.1"属性是:
建议符合image/svg+xml文件标准。3. 显然被每个用户代理忽略了。4 在SVG 2中删除。5
国际化资源标识符(RFC3987) 2自HTML5以来 3 XML (Extensible Markup Language) 1.0 4可能要等到更多主要版本的发布。 5 SVG 2, W3C候选推荐,2018年8月7日