使用D3库将SVG元素置于z顺序顶部的有效方法是什么?
我的特定情况是一个饼图其中突出(通过添加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”类的定义如下:
.top {
fill: red;
z-index: 100;
}
该fill
语句可以确保我知道它正确打开/关闭。它是。
我听说过使用sort
是一个选项,但是我不清楚如何将“ selected”元素置于顶部。
更新:
我使用以下代码修复了我的特殊情况,该代码在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();
});
开发人员提出的解决方案之一是:“使用D3的sort运算符对元素进行重新排序”。
有鉴于此,人们可以通过比较元素的数据或元素的位置(如果它们是无数据元素)来对元素进行排序:
.on("mouseover", function(d) {
svg.selectAll("path").sort(function (a, b) { // select the parent and sort the path's
if (a.id != d.id) return -1; // a is not the hovered element, send "a" to the back
else return 1; // a is the hovered element, bring "a" to the front
});
})
本文向大家介绍d3.js 使用D3 js创建SVG元素,包括了d3.js 使用D3 js创建SVG元素的使用技巧和注意事项,需要的朋友参考一下 示例 尽管D3并非专门用于处理SVG元素,但它已广泛用于创建和处理基于SVG的复杂数据可视化。D3提供了许多强大的方法,可帮助轻松创建各种几何SVG结构。 建议首先了解SVG规范的基本概念,然后使用大量的D3 js示例创建可视化效果。 D3 JS范例 SV
问题内容: 假设我有几个复合形状()。我希望能够单击并拖动它们,但是我希望当前碰巧拖动的那个按Z顺序位于另一个的TOP上,因此,如果将其拖动到另一个,则另一个一个人应该黯然失色。 问题答案: SVG中的Z索引由元素在文档中出现的顺序定义。如果要在顶部显示特定形状,则必须更改元素顺序。
问题内容: 假设我有以下代码: 现在,我需要在上面,但是在jsFiddle中,您可以看到child元素呈现在before之前。 如果您删除 类 或 ,则一切正常。这是我需要的正确行为: http //jsfiddle.net/ZjXMR/1/ 如何在不删除页面的情况下执行此操作? 问题答案: 这是不可能的,因为子级的设置与父级的堆叠索引相同。 您已经通过从父级移除z-index来解决该问题,将其保
问题内容: 我需要一个动态元素始终出现在另一个元素的顶部,无论它们在DOM树中的顺序如何。这可能吗?我已经尝试了(和),但似乎没有用。 我需要: 呈现时完全相同。并且出于灵活性目的(我计划分发需要此功能的插件),我真的不想不必求助于绝对或固定位置。 为了执行我想要的功能,我做了一个条件语句,其中重叠的子元素将在阻止其父视图的情况下变得透明。这不是完美的,但它是某种东西。 问题答案: 如果元素构成层
问题内容: 我用一个pre-pseudo元素创建了一个’header’元素。pseudeo元素必须位于父元素之后。一切正常,直到我给我的“页眉”添加z-index为止。 我想要的是:前景上的黄色“标头”,背景上的红色伪元素以及黄色“标头”元素上的简单z索引30。 您可以在此链接)上测试我的问题,当您在de’header’元素上设置/删除z-index时,您会看到问题。 问题答案: :: befor
问题内容: 我想在z平面上订购3个HTML元素: 我希望 按钮 在 银行的 上方,但在 卡的背面 。但是无论我尝试什么,该 按钮 始终位于 银行 和 卡上 。 编辑:我注意到从’.bank’中删除z-index和transform可以解决它,但是我需要transform属性。 我能做什么? 是什么导致它无法正常工作?谢谢 问题答案: 不要指定任何内容以避免创建新的堆栈上下文,而只需调整其他元素的即