डी 3 लाइब्रेरी का उपयोग करके, एसवीजी तत्व को जेड-ऑर्डर के शीर्ष पर लाने का एक प्रभावी तरीका क्या है?
मेरे विशिष्ट परिदृश्य एक पाई चार्ट जो प्रकाश डाला (एक जोड़कर है 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
काम नहीं करता था।
"सीएसएस" वर्ग को मेरे सीएसएस में निम्नानुसार परिभाषित किया गया है:
.top {
fill: red;
z-index: 100;
}
fill
बयान मैं इसे चालू करने गया था / सही ढंग से बंद जानता था कि वहाँ सुनिश्चित करने के लिए है। यह है।
मैंने सुना है कि उपयोग sort
करना एक विकल्प है, लेकिन मैं इस बात पर स्पष्ट नहीं हूं कि इसे "चयनित" तत्व को शीर्ष पर लाने के लिए कैसे लागू किया जाएगा।
अपडेट करें:
मैंने अपनी विशेष स्थिति को निम्न कोड के साथ तय किया, जो mouseover
कि एक हाइलाइट दिखाने के लिए एसवीजी पर एक नया चाप जोड़ता है ।
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();
});