Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在画布上分层多个svg,让svg可以移动和调整大小_Javascript_Jquery_Html_Css_Svg - Fatal编程技术网

Javascript 在画布上分层多个svg,让svg可以移动和调整大小

Javascript 在画布上分层多个svg,让svg可以移动和调整大小,javascript,jquery,html,css,svg,Javascript,Jquery,Html,Css,Svg,如我们所见,div可以使用javascript进行拖动和调整大小。 svg也是一个html元素, 是否可以使用css+jquery来拖动、调整svg的大小 在这里,svg是整个svg,而不是svg元素的子元素 我知道是否可以使用svg元素组进行翻译。但svg不变,位置不变 我试过左上角。 我也试过设置x,y 是否有可能使其可拖动和调整大小 Div是一个DOM元素,它可以调整大小,也可以拖动 svg也是一个Dom元素,它可以调整大小和拖动吗 尽管如此,我仍然有上述问题,谢谢阿尔文K:它解决了我的

如我们所见,div可以使用javascript进行拖动和调整大小。

svg也是一个html元素, 是否可以使用css+jquery来拖动、调整svg的大小

在这里,svg是整个svg,而不是svg元素的子元素

我知道是否可以使用svg元素组进行翻译。但svg不变,位置不变

我试过左上角。 我也试过设置x,y

是否有可能使其可拖动和调整大小

Div是一个DOM元素,它可以调整大小,也可以拖动

svg也是一个Dom元素,它可以调整大小和拖动吗

尽管如此,我仍然有上述问题,谢谢阿尔文K:它解决了我的问题:


谢谢你抽出时间

缩放和拖动演示: var svg=d3.selectchart1.append'svg'

svg.attr("width", 200)
  .attr("height", 200)
  .attr("viewBox", "0 0 200 200");

var circle = svg.append('circle')
  .attr({
    r: 30,
    cx: 100,
    cy: 100
  })
  .style({
    fill: "green",
    stroke: "red"
  });
var open = false;
circle.on('click', function(e) {
  open = !open;
  if (open) {
    svg.attr("viewBox", "0 0 200 200");
  } else {
    svg.attr("viewBox", "0 0 400 400");
  }
})


 circle.on("mousemove", function() {
  circle.attr("cx", d3.mouse(this)[0]);
  circle.attr("cy", d3.mouse(this)[1]);
});    
是的,您应该能够像其他DOM一样使用它

如果您使用d3,d3完全可以调整大小和缩放。不需要使用jQuery使事情变得更复杂。您可以将代码附加到jsbin或plunker中

顺便说一句,您需要了解d3selection.attr和d3selection.style的不同之处

attr用于属性对

样式用于css样式


在浏览器战争时期,它们有点混乱,但现在,我们对此有了更好的标准

可能与stackoverflow.com/q/11524263/2472391thanks,@AlvinK有重复。不幸的是,它们被用来翻译svg元素的子元素。我想换个svg。不是因为孩子。因为我在画布上分层svg,如果svg没有移动,当我的鼠标放在那个地方时,它不在svg上,也不在画布上。但是如果它是move,它应该在画布上。谢谢,@AlvinK似乎你是对的,你把svg放在div中,它就可以移动了。虽然svg的x、y没有改变。div正在改变,谢谢,我明白了。谢谢,但是您的示例只是移动svg的元素。但是svg仍然在左边。我不想移动svg的元素。我只想移动所有svg。就像jQuery示例中的div一样,如果移动div,它将变为左上角。或调整大小:宽度、高度
svg.attr("width", 200)
  .attr("height", 200)
  .attr("viewBox", "0 0 200 200");

var circle = svg.append('circle')
  .attr({
    r: 30,
    cx: 100,
    cy: 100
  })
  .style({
    fill: "green",
    stroke: "red"
  });
var open = false;
circle.on('click', function(e) {
  open = !open;
  if (open) {
    svg.attr("viewBox", "0 0 200 200");
  } else {
    svg.attr("viewBox", "0 0 400 400");
  }
})


 circle.on("mousemove", function() {
  circle.attr("cx", d3.mouse(this)[0]);
  circle.attr("cy", d3.mouse(this)[1]);
});