那么如果在svg元素上没有设置宽度和高度,如何使用javascript获取SVG文件的大小? svg是一个字符串,但如果需要可以创建一个DOM .
SVG是可缩放的矢量图形,因此可以具有任意高度和宽度 . 只有比率由格式确定 .
您可以使用SVGElement对象的getBBox()方法 . 它会以像素为单位告诉您宽度和高度,x和y偏移量,而不考虑元素的缩放比例 .
document.getElementById('myelem').getBBox().width document.getElementById('myelem').getBBox().height
我想是你正在寻找的 .
编辑:
我最近还了解到,鲜为人知的 getBoundingClientRect() 也是如此!你也可以这样做: var el = document.getElementById('myelem'); var mywidth = el.getBoundingClientRect().width;
getBoundingClientRect()
var el = document.getElementById('myelem'); var mywidth = el.getBoundingClientRect().width;
请记住,getBBox和getBoundingClientRect之间存在差异 . getBBox获取初始尺寸 - getBoundingClientRect也尊重 transformations 用尺度等完成 .
2 回答
SVG是可缩放的矢量图形,因此可以具有任意高度和宽度 . 只有比率由格式确定 .
您可以使用SVGElement对象的getBBox()方法 . 它会以像素为单位告诉您宽度和高度,x和y偏移量,而不考虑元素的缩放比例 .
我想是你正在寻找的 .
编辑:
我最近还了解到,鲜为人知的
getBoundingClientRect()
也是如此!你也可以这样做:var el = document.getElementById('myelem'); var mywidth = el.getBoundingClientRect().width;
请记住,getBBox和getBoundingClientRect之间存在差异 . getBBox获取初始尺寸 - getBoundingClientRect也尊重 transformations 用尺度等完成 .