计算SVG元素的尺寸
Calculate dimentions of SVG element
如何跨浏览器以一致的方式计算SVG元素的尺寸?
var svg = document.querySelector('svg');
var gBCR = svg.getBoundingClientRect().width;
var bBox = svg.getBBox().width;
var gCS = window.getComputedStyle(svg, null).width;
console.log('gBCR: ' + Math.round(gBCR) + ' - gCS: ' + gCS + ' - bBox: ' + Math.round(bBox));
// What I got:
// Firefox: gBCR: 142 - gCS: 400px - bBox: 363
// Chrome: gBCR: 400 - gCS: 400px - bBox: 363
http://jsfiddle.net/23x8S/
我的svg元素:<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" height="200px">
<title>HTML5 Logo</title>
<polygon fill="#E44D26" points="107.644,470.877 74.633,100.62 437.367,100.62 404.321,470.819 255.778,512" />
<polygon fill="#F16529" points="256,480.523 376.03,447.246 404.27,130.894 256,130.894 " />
<polygon fill="#EBEBEB" points="256,268.217 195.91,268.217 191.76,221.716 256,221.716 256,176.305 255.843,176.305 142.132,176.305 143.219,188.488 154.38,313.627 256,313.627" />
<polygon fill="#EBEBEB" points="256,386.153 255.801,386.206 205.227,372.55 201.994,336.333 177.419,336.333 156.409,336.333 162.771,407.634 255.791,433.457 256,433.399" />
<path d="M108.382,0h23.077v22.8h21.11V0h23.078v69.044H152.57v-23.12h-21.11v23.12h-23.077V0z" />
<path d="M205.994,22.896h-20.316V0h63.72v22.896h-20.325v46.148h-23.078V22.896z" />
<path d="M259.511,0h24.063l14.802,24.26L313.163,0h24.072v69.044h-22.982V34.822l-15.877,24.549h-0.397l-15.888-24.549v34.222h-22.58V0z" />
<path d="M348.72,0h23.084v46.222h32.453v22.822H348.72V0z" />
<polygon fill="#FFFFFF" points="255.843,268.217 255.843,313.627 311.761,313.627 306.49,372.521 255.843,386.191 255.843,433.435 348.937,407.634 349.62,399.962 360.291,280.411 361.399,268.217 349.162,268.217" />
<polygon fill="#FFFFFF" points="255.843,176.305 255.843,204.509 255.843,221.605 255.843,221.716 365.385,221.716 365.385,221.716 365.531,221.716 366.442,211.509 368.511,188.488 369.597,176.305" />
<svg>
你的方法似乎是正确的,它在两种情况下都给出了正确的宽度,问题是SVG
组件在Firefox和Chrome中呈现不同,在Chrome中使用100%的可用宽度,在Firefox中使用最小宽度来显示内容。
这个跟踪器解释了为什么Firefox不使用"100%"作为默认宽度:https://bugzilla.mozilla.org/show_bug.cgi?id=611099
相关文章:
- 锚点元素不't使用svg时,请打开EDGE上的href
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 在select元素中显示highchart dashstyle(svg)
- 如何自动保存动态生成的HTML SVG元素
- 使用svg和javascript将一个类的元素动画化为另一个类
- 将包含SVG元素的HTML转换为图像文件
- SVG元素——处理和选择文本
- 更改SVG'style'元素
- SVG元素在转换后会丢失事件侦听器
- 获取以屏幕像素为单位的旋转SVG元素的边界
- 使用JavaScript查找具有特定属性的SVG元素
- 如何使用正则表达式按类获取svg元素
- d3与svg在处理元素时的对比
- 是否可以在不创建svg对象的情况下创建捕捉元素?[snap.svg]
- 将SVG元素拖动到另一个SVG元素上
- 捕捉.svg — 单击其中一个元素时删除对象
- 单击事件在替换<使用>元素在<svg>(Win7/IE11)
- 我想隐藏/显示我的SVG元素,同时在anguarJS中使用它
- 在元素 SVG 中使用 JavaScript 或 jQuery 进行事件单击
- 是否有一种方法可以使用Javascript合并两个路径元素(svg)