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 strokeiçin pathfare 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 classedde 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;
}
fillDeyim ben kapalı doğru / açma biliyordum emin orada yapmaktır. Bu.
Kullanmanın sortbir 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, mouseovervurguyu 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();
});