Svg文本元素被另一个Svg元素重叠
Svg text element being overlapped by another svg element
我现在正在构建一个饼图,它基本上已经完成了。
无论如何,我试图在每个饼图上实现一些悬停效果,但我遇到了一个无法解决的问题。当您将鼠标悬停在元素上时,文本的大小会增加,并且还会使用过滤器添加黑色背景。这个问题是,文本有时被隐藏在其他元素后面,就好像这些元素在它上面一样。我解决这个问题的最佳解决方案是增加可见性并制作它!重要的
.pieChart svg>g text.hover {
font-size: 1.3em;
fill: #fff;
filter: url(#pieTextFilter);
visibility: visible !important;
}
然而,这并不能解决我的问题。
下面是一个表示问题的jsfiddle(将鼠标悬停在切片4上):http://jsfiddle.net/tinygram/22o1epyp/3/
如果您熟悉D3,可能需要注意的是,只有在我更新图形之后才会发生这种情况。如果你看看我的jsfiddle的底部,你会发现我正在启动这个图,然后用一些更新的数据再次运行它。我注意到这在dom中的svg末尾添加了一个新的和。老实说,我不知道这是否重要,但我认为我应该提到它。
正如@LarsKotthoff在评论中提到的那样,一切都按顺序进行。您最初构建了一个包含4个切片的饼图,然后添加第5个切片。因此,输入选择首先添加4个切片和4个标签。在添加第5个切片时,它更新前4个切片/标签,并输入第5个片/标签。第5个切片的添加然后在第4个标签的顶部。
看看这把小提琴。问题消失了,因为我调用了出口:
tests(data);
tests({});
tests(data2);
一个更好的解决方案可能只是在更新前删除所有文本:
tests(data);
d3.selectAll('text').remove();
tests(data2);
相关文章:
- 如何自动保存动态生成的HTML SVG元素
- 将包含SVG元素的HTML转换为图像文件
- SVG元素——处理和选择文本
- SVG元素在转换后会丢失事件侦听器
- 获取以屏幕像素为单位的旋转SVG元素的边界
- 使用JavaScript查找具有特定属性的SVG元素
- 如何使用正则表达式按类获取svg元素
- 将SVG元素拖动到另一个SVG元素上
- 我想隐藏/显示我的SVG元素,同时在anguarJS中使用它
- 如何在svg元素上添加和删除css类
- 在模式框打开之前更改 SVG 元素的颜色,并在框打开时保持该颜色
- 将复杂的 SVG 元素追加到选区
- 使用 JQuery 对 Spin SVG 元素进行动画处理
- 检查直线是否与带有 SVG 元素的圆相交
- 如何添加效果,以便将鼠标悬停在 SVG 元素上使其变大
- 如何将运动模糊尾巴添加到圆圈中的 svg 元素
- SVG 元素作为容器
- 从上传的文件中获取svg元素的宽度
- 是否可以用D3将svg元素添加到开放层映射中
- 单击时将SVG元素替换为另一个