Sha*_*dow 14 html javascript svg
我svg在javascript中创建了一个元素,我需要设置一个区分大小写的属性:viewBox.
该元素的创建方式如下: var svgElem = document.createElement('svg');
问题是当它通过svgElem.setAttribute("viewBox", "0,0,100,100")DOM 设置该属性并附加到DOM时,结果元素显示如下:
<svg viewbox="0,0,100,100"></svg>
这不起作用,因为viewBox它区分大小写,如果字母B是小写的,它将不会产生任何影响.
IE只允许这样的情况使用IFlag参数,但是我的目标受众仅限于FireFox和Chrome用户,我没有找到IFlag setAttribute.
有没有一种方法可以在不使用innerHTML和无库javascript的情况下完成这项工作?
编辑:我也尝试使用点符号没有成功 svg.viewBox = "0,0,100,100"
log*_*yth 21
您需要创建一个实际svg元素.当你这样做时:
var svg = document.createElement('svg');
Run Code Online (Sandbox Code Playgroud)
你实际得到的是一个名为HTML元素svg,而不是SVG元素.这里的关键是SVG实际上根本不是HTML元素,它是一个外来文档根.要正确创建SVG元素,您需要这样做
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
Run Code Online (Sandbox Code Playgroud)
具体来说,这会创建一个XML元素,而不是HTML元素.在基本浏览器的情况下,
document.createElement('div')
Run Code Online (Sandbox Code Playgroud)
是相同的
document.createElementNS('http://www.w3.org/1999/xhtml', 'div');
Run Code Online (Sandbox Code Playgroud)
这有很大的不同,因为在HTML中,属性名称不区分大小写,而在XML中,它们是.此外,如果您要将该SVG附加到DOM,它将表现得像div是一个未知的HTML元素,而不是真正的SVG元素.HTML解析器非常智能,可以创建外部根节点而不是未知的HTML元素,但是您的代码是编程式的,因此无法自动执行.
| 归档时间: |
|
| 查看次数: |
2687 次 |
| 最近记录: |