Javascript 在画布上分层多个svg,让svg可以移动和调整大小
如我们所见,div可以使用javascript进行拖动和调整大小。 svg也是一个html元素, 是否可以使用css+jquery来拖动、调整svg的大小 在这里,svg是整个svg,而不是svg元素的子元素 我知道是否可以使用svg元素组进行翻译。但svg不变,位置不变 我试过左上角。 我也试过设置x,y 是否有可能使其可拖动和调整大小 Div是一个DOM元素,它可以调整大小,也可以拖动 svg也是一个Dom元素,它可以调整大小和拖动吗 尽管如此,我仍然有上述问题,谢谢阿尔文K:它解决了我的问题: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:它解决了我的
谢谢你抽出时间 缩放和拖动演示: 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]);
});