Javascript 打开宽度/高度属性时获取svg图形大小<;svg>;没有设定

Javascript 打开宽度/高度属性时获取svg图形大小<;svg>;没有设定,javascript,svg,Javascript,Svg,那么,当SVG元素上没有设置宽度和高度时,如何使用javascript获得SVG文件的大小呢?svg是一个字符串,但如果需要,可以将其变成DOM。svg是可伸缩的矢量图形,因此可以具有任意高度和宽度。只有比率是由格式固定的。您可以使用SVGElement对象的getBBox()方法。它以像素为单位告诉您宽度和高度、x和y偏移,而不考虑元素的缩放 document.getElementById('myelem').getBBox().width document.getElementById(

那么,当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

  • 请记住,getBBox和getBoundingClientRect之间存在差异。getBBox获取初始维度-getBoundingClientRect还尊重使用scale等完成的转换


  • 非常感谢,我知道这一点,但在我制作的SVG Viever小部件()中,我需要显示SVG文件的缩略图(比如100x100),如果文件既没有宽度/高度属性,也没有viewBox属性,那么它将以一定的大小显示,并且只有100x100部分可见。我想以某种方式处理该文件,以获得尺寸并设置宽度/高度和viewBox属性。然后您必须对此进行假设。如果您的拇指是100x100,那么为什么不在100x100处显示SVG?我已设置,如果file.SVG没有宽度和高度&viewBox,则仅显示100x100部分(如果显示)。我想确定图形的大小,设置属性并重写磁盘上的文件,所以假设不行。你知道怎么做吗?如果标签上没有设置高度和宽度,就没有固有的尺寸。您可以查看svg中的每个元素,查看最大的x+宽度和最大的y+高度,并将其称为大小。我不确定你会从中得到什么好处。从概念上讲,如果不是固有的高度和宽度,您认为尺寸是什么?谢谢,x+宽度和y+高度是一个很好的变体!是的,我的意思是我需要知道内在的高度和宽度。如果我设置这三个属性,图像将始终适合对象标记的尺寸,而不是被截断。你能不能写一个if-else算法来计算宽度和高度,因为我不是一个程序员,我自己也无法计算出来。我找到了一个可能有用的页面,在这里给徽章的按钮在哪里?
    getBBox
    返回
    {[…],宽度:0,高度:0}
    getBoundingClientRect
    。后者不适用于FireFox。不要用jQuery(比如$(yourElement))包装元素,因为getBBox不是一个函数。您可以使用jQuery选择元素,只需在之后添加“[0]”即可获得非jQuery dom元素。。。i、 e.$(yourElement)[0].getBoundingClientRect().heightjQuery充其量与外围设备相关。