【发布时间】:2015-04-14 00:04:28
【问题描述】:
全部:
假设有两层(顶层是 SVG:PATH,底层是 SVG:RECT,顶层覆盖底层),我想将 D3 拖动到 RECT 层,鼠标悬停到 PATH 层,谁能教我怎么做?
下面的代码只能用于路径层:
var svg = d3.select("svg");
svg.style("width", "400px")
.style("height", "400px")
.style("border", "1px solid grey");
var r = svg.select("rect")
.attr("width", "300px")
.attr("height", "300px")
.attr("x", "50px")
.attr("y", "50px")
.style("fill", "whitesmoke");
var p = svg.select("path")
.attr("d", function(){
return "M0 0 L380 0 L300 300L0 380Z";
})
.style("fill", function(){
return "rgba(10,10,10,0.2)";
})
.on("mousedown", function(){
});
var drag = d3.behavior.drag();
var dragstart = function(){
alert("drag start");
};
drag.on("dragstart", );
r.call(drag);
谢谢
【问题讨论】:
-
你试过什么?如果您不尝试,首先,您将面临被否决的风险。 (对于力布局做类似的事情,请参阅this question 的答案。)
-
正是你所说的。在矩形上调用拖动,所以 select(RECT).on('drag', drag);然后设置拖动功能来调用。然后 select(PATH).on('mouseover',whateveryouwanttocallhere);
-
@Mars 按照你的要求,我已经添加了我所做的,这个代码只能在路径层上工作,我该如何拖动它下面的元素?
-
@AJ_91 听起来很有趣。但是你能给我举个例子吗?
-
@Mars 您的链接帖子似乎与我的情况略有不同,内圈在外圈上方,很容易触发拖动行为