在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