중첩 된 요소 집합 (SVG)이 있습니다. 루트 요소는 그래프이고 자식 요소는 그래프의 요소 (선, 축 등)입니다. 간단한 예 :중첩 된 SVG 요소로 d3.on ("mouseover") 이벤트가 작동하지 않습니다.
<g transform="translate(80,10)" id="mainGraph">
<g class="Line">
<path d="....."></path>
</g>
</g>
내 문제는 내가 mainGraph 요소 (예를 들어 D3.on ("마우스 오버")와 함께) 마우스 오버/MouseMove 이벤트 이벤트를 결합하면 내가 하나를 위로 마우스를 이동하는 경우, 그것은 단지 트리거이다 자식 요소들.
내가 읽은 것 중 하나는 이후 요소의 우선 순위가 있으므로 모든 자식 요소에 .style ("포인터 이벤트", "없음")을 추가했지만 작동하지 않는다는 것입니다.
something.append('svg:rect')
.attr('width', width) // the whole width of g/svg
.attr('height', height) // the whole heigh of g/svg
.attr('fill', 'none')
.attr('pointer-events', 'all')
.on('mouseover', function() {
// do something
}
});
내가 (당신의 예에서 mainGraph)를
<g>
요소를 믿는다
에 CSS 속성을 추가하는 것입니다. –
'g' 요소 ('div'와는 달리)는 형태가없는 컨테이너이므로 치수가 없습니다. 마우스 오버를 직사각형 영역에 적용하려면이 사각형과 같은 직사각형의 내용을 지정해야합니다. 그러나 하나의 유용한 개선점은 fill : none 및 pointer-events : 모든 스타일을 사용하는 것입니다. – mbostock
@mbostock 요소에서 포인터 이벤트를 직접 사용하거나 CSS 속성에서 포인터 이벤트를 사용하면 어떤 차이가 있습니까? ''''''내부의''path'' 요소는 같은 방식으로 동작합니까? – amenadiel