在d3.js V4中,d3.event.y给出了事件在SVG元素中的位置,但我需要事件的位置,因为它在G元素。例如,如果鼠标位于G元素的顶部而不是d3.event.y应该为零。但在我的尝试中,只有当鼠标位于SVG元素的顶部时,它才为零。这是我的尝试:jsbin link - 尝试上下拖动“水”线。水线从不匹配鼠标拖动。我的SVG将按照页面的宽度进行缩放,因此我无法对代码值进行硬编码。如何获得d3.event.Y作为<g>元素中的位置
D3 V4代码:
var high = null;
d3.select('#bfG').call(
d3.drag().on('start', function() {
//get the real height of the <g> element
high = this.getBoundingClientRect().height;
}).on('drag', function() {
// % of the location relative to the <g> height
var p = (d3.event.y/high) * 100;
var q = Math.max(0, Math.min(100, p));
d3.select('#stop1').attr('offset', q + '%');
d3.select('#stop2').attr('offset', q + '%');
})
);
在所有的比例级别上,这个工作正常[var p = d3.event.y - 25;'http://jsbin.com/yodagoxemo/1/edit?html,js,output – Cyril
不是当我的形状高度发生变化时:http://jsbin.com/yecazad/1/edit?js,output – getsetbro