D3 라이브러리를 사용하여 SVG 요소를 z 순서의 맨 위로 가져 오는 효과적인 방법은 무엇입니까?
내 특정 시나리오의 (a를 추가하여하는 하이라이트 파이 차트 stroke
받는 path
마우스가 주어진 조각 위에있을 때). 내 차트를 생성하는 코드 블록은 다음과 같습니다.
svg.selectAll("path")
.data(d)
.enter().append("path")
.attr("d", arc)
.attr("class", "arc")
.attr("fill", function(d) { return color(d.name); })
.attr("stroke", "#fff")
.attr("stroke-width", 0)
.on("mouseover", function(d) {
d3.select(this)
.attr("stroke-width", 2)
.classed("top", true);
//.style("z-index", 1);
})
.on("mouseout", function(d) {
d3.select(this)
.attr("stroke-width", 0)
.classed("top", false);
//.style("z-index", -1);
});
몇 가지 옵션을 시도했지만 지금까지 운이 없습니다. 둘 다 사용 style("z-index")
하고 호출 classed
해도 작동하지 않았습니다.
"상위"클래스는 내 CSS에서 다음과 같이 정의됩니다.
.top {
fill: red;
z-index: 100;
}
이 fill
성명서는 올바르게 켜고 끄는 것을 확인하기위한 것입니다. 그것은.
사용하는 sort
것이 옵션이라고 들었지만 "선택된"요소를 맨 위로 가져 오기 위해 어떻게 구현되는지 확실하지 않습니다.
최신 정보:
mouseover
하이라이트를 표시하기 위해 이벤트 의 SVG에 새 호를 추가하는 다음 코드로 특정 상황을 수정했습니다 .
svg.selectAll("path")
.data(d)
.enter().append("path")
.attr("d", arc)
.attr("class", "arc")
.style("fill", function(d) { return color(d.name); })
.style("stroke", "#fff")
.style("stroke-width", 0)
.on("mouseover", function(d) {
svg.append("path")
.attr("d", d3.select(this).attr("d"))
.attr("id", "arcSelection")
.style("fill", "none")
.style("stroke", "#fff")
.style("stroke-width", 2);
})
.on("mouseout", function(d) {
d3.select("#arcSelection").remove();
});