用于移动任何SVG元素的通用JS函数

时间:2013-03-06 18:02:10

标签: javascript svg

考虑这个例子有2个圆圈(红色和蓝色):

<svg width="500px" height="500px">
  <circle cx="100" cy="50" r="40" fill="red" id="redcircle" />
  <g transform="translate(200,-20)">
    <g transform="scale(2)">
      <g transform="rotate(45)">
        <g transform="translate(5,10)">
          <circle cx="100" cy="50" r="40" fill="blue" id="bluecircle" />
        </g>
      </g>
    </g>
  </g>
</svg>

我想知道是否有办法编写通用函数,如:

function move(selection){
  // ???
}

这样就可以编写move("#redcircle")move("#bluecircle"),可以直观地将目标元素100px移动到右边(例如)。

2 个答案:

答案 0 :(得分:6)

见这个jsfiddle

function moveSection(idStr, xOffset, yOffset) {
var domElemnt = document.getElementById(idStr);
    if (domElemnt) {
        var transformAttr = ' translate(' + xOffset + ',' + yOffset + ')';
        domElemnt.setAttribute('transform', transformAttr);
    }
}
moveSection("bluecircle", 50, 20);

http://jsfiddle.net/dKxZt/4/

它使用translate来移动元素。

在此处查看此演示以实现SVG元素的拖动:Getting the Screen Pixel coordinates of a Rect element

答案 1 :(得分:-2)