D3 kitaplığını kullanarak bir SVG öğesini z sırasının en üstüne getirmenin etkili bir yolu nedir?
Benim belirli senaryo (a ekleyerek hangi olayları bir pasta grafik stroke
için path
fare belirli bir parçasının üzerinde olduğunda). Grafiğimi oluşturmak için kod bloğu aşağıdadır:
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);
});
Birkaç seçeneği denedim ama şimdiye kadar şansım olmadı. style("z-index")
İkisini classed
de kullanmak ve aramak işe yaramadı.
"En üst" sınıf, CSS'mde aşağıdaki gibi tanımlanmıştır:
.top {
fill: red;
z-index: 100;
}
fill
Deyim ben kapalı doğru / açma biliyordum emin orada yapmaktır. Bu.
Kullanmanın sort
bir seçenek olduğunu duydum , ancak "seçili" öğeyi en üste getirmek için nasıl uygulanacağı konusunda emin değilim.
GÜNCELLEME:
Özel durumumu, mouseover
vurguyu göstermek için olaydaki SVG'ye yeni bir yay ekleyen aşağıdaki kodla düzelttim .
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();
});