今天在写 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

评论

0 / 800
全部评论()