【发布时间】:2012-05-08 03:40:44
【问题描述】:
我想使用 JavaScript 操作 SVG 元素的 transform="translate(x,y)" 属性。
所以我得到了这个 HTML 代码:
<body>
<svg id="test" preserveAspectRatio="xMidYMid meet" viewBox="0 0 100% 100%" xmlns="http://www.w3.org/2000/svg" version="1.1">
<rect transform="translate(100,100)" width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)" />
<rect transform="translate(400,400)" width="300" height="400" style="fill:red; stroke-width:1; stroke: yellow" />
</svg>
</body>
还有这段 JavaScript 代码:
var positioner = (function(domUtils){
var svg = document.getElementById("test");
var elementOffset = 100;
function getAbsoluteX(leftElement) {
return domUtils.getWidth(leftElement) + elementOffset;
}
function getAbsoluteY(topElement) {
return domUtils.getHeight(topElement) + elementOffset;
}
var rectangles = document.querySelectorAll("rect");
for(var i = 0; i < rectangles.length; ++i) {
var spaceLeft = 0;
if(i > 0) {
spaceLeft = getAbsoluteX(rectangles[i-1]);
}
var rect = rectangles[i];
var attrValue = "translate(" + spaceLeft + ", 100)";
rect.setAttribute('transform', attrValue);
};
})(domUtils);
其中getAbsoluteX()是自定义函数。
它在 Firefox 中运行良好,但在 chrome 中不行。任何人都知道解决方法或如何解决这个问题?
谢谢。 问候。
【问题讨论】:
-
它对我来说很好用 (jsfiddle.net/un6ep)。
getAbsoluteX方法有什么作用 -
神秘.. 刚刚将其粘贴到jsfiddle.net/nfRGw 中,它工作正常。但是如果我离线尝试它,它就不起作用。也许 jsfiddle 使用了一些支持 Chrome 的框架?
-
viewBox="0 0 100% 100%"看起来很不对
标签: javascript google-chrome svg transform