Las*_*Wiz 5 javascript jquery svg
我设置了一个自动调整大小的SVG,它根据父容器改变大小,同时保持纵横比.
我想将SVG元素置于父容器中心,因为父容器的尺寸不一定与SVG的尺寸相匹配.
我创造了一个小提琴来展示我的意思:http://jsfiddle.net/lazthewiz/cXx46/
<DIV>
<SVG id=svg viewBox="0 0 160 90" preserveAspectRatio="xMinYMin">
...
Run Code Online (Sandbox Code Playgroud)
DIV {
width: 200px;
height: 200px;
}
SVG {
width: 100%;
height: 100%;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,jQuery返回的或在DOM中找到的宽度和高度值都是无用的.它们要么返回零,要么返回父容器的尺寸(取决于您使用的浏览器).
有没有办法用jQuery或普通JS获取嵌入式SVG的实际尺寸?
我认为是这样。尚未使用 Google Chrome (33.0.1750.154 m) 以外的任何工具进行测试。对于您的代码/样式,我实际上得到的值是 200 和 112.5(而不是 200x113)
var mImg = document.getElementById('svg');
var aspect = mImg.viewBox.baseVal.height / mImg.viewBox.baseVal.width;
var width = mImg.clientWidth;
var height = width * aspect;
var msg = '';
msg += 'width: ' + width;
msg += ', ';
msg += 'height: ' + height;
document.body.appendChild( document.createTextNode(msg) );
Run Code Online (Sandbox Code Playgroud)
我想如果图像很高而不是很宽,这会失败 - 但我想你可以根据 viewBox 的哪个尺寸较大(宽度或高度)来决定如何正确计算大小。