Все:Как вручную вызвать событие аэродинамического сопротивления d3
Предположим, что существуют два слоя (верхний является SVG: PATH, нижний слой представляет собой SVG: RECT, верхний слой покрывает нижний слой), Я хочу применить перетаскивание D3 к слою RECT и mouseover к слою 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);
Благодарность
Что вы пробовали? Если вы не попробуете, во-первых, вы рискуете заниженными. (Чтобы сделать что-то подобное с компоновкой силы, см. Ответ на [этот вопрос] (http://stackoverflow.com/questions/28935312/force-layout-inside-force-layout-how-to-drag-inner-nodes).) – Mars
Именно то, что вы сказали. Перетащите вызов на прямоугольник, поэтому выберите (RECT) .on («перетащить», перетащить); затем настройте функцию перетаскивания для вызова. И затем выберите (PATH) .on («наведение мыши», в любом случае); –
@Mars, как вы просили, я добавил то, что я сделал, этот код может работать только на уровне пути, как я могу перетащить элемент под ним? – Kuan