d3.js V4에서 d3.event.y는 SVG 요소에서 이벤트 y 위치를 제공하지만 이벤트의 위치가 필요합니다. G 요소. 예를 들어 마우스가 G 요소의 맨 위에 있으면 d3.event.y는 0이어야합니다. 그러나 마우스를 SVG 요소의 맨 위에두면 제로입니다. 내 시도는 다음과 같습니다. jsbin link - '물'선을 위아래로 드래그 해보세요. 물줄기는 마우스 끌기와 결코 일치하지 않습니다. 내 SVG는 페이지 너비에 따라 확장되므로 코드 값을 하드 코딩 할 수 없습니다.<g> 요소의 위치로 d3.event.Y를 얻는 방법
D3 V4 번호 : 그러면 사용자 공간의 형상의 Y 및 높이 특성을 얻기하고 getBBox 방법을 사용할 수
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