今天在写 canvas 的工具,由于要使用到 svg 的 createSVGMatrix
创建 一个矩阵去为图形添加变形缩放的功能,因为只有这里用到 svg 所以想通过 document.createElement
手动创建一个 svg 元素。
通过 document.createElement
是创建了一个 svg 标签,但这其实并不是一个真正的 svg 元素,svg 标签对应的元素类是 SVGSVGElement
,而document.createElement('svg')
创建的元素类实际是HTMLUnknownElement
,所以通过这种方式创建的 svg 是不能用的,因为HTMLUnknownElement
的内部是没有 createSVGMatrix
属性的。
那么是不是不能手动创建 svg 标签元素呢?当然不是,好在浏览器还提供了 createElementNS
api ,只要 document.createElementNS('http://www.w3.org/2000/svg', 'svg')
这样写就能成功创建 svg 标签元素。
后记
可以直接 new DOMMatrix()
,不需要用 svg...
参考
https://developer.mozilla.org/zh-CN/docs/Web/API/SVGSVGElement
https://webhint.io/docs/user-guide/hints/hint-create-element-svg/
https://developer.mozilla.org/zh-CN/docs/Web/API/Document/createElementNS
评论