2011-06-08 11 views
3

据我所知,把东西放到最前面的唯一方法是删除/追加或追加。然而,这太低效了,我以为我只是先在这里检查。 我有一组复杂的对象,在mouseover(路径和文本)上弹出。我最初以为我会通过创建弹出框的一个静态实例并隐藏它来处理这个问题。无论何时需要,我只需翻译它并使其可见即可。SVG:appendNode的替代方案'bring before front'

我认为这有效,但事实证明它是透明的 - 任何在脚本中动态创建的东西都会出现在它的顶部。有什么办法可以做到这一点?另一种方法是在每次鼠标悬停时从头开始创建它,然后在mouseout上删除它,这只是感觉不对。

谢谢 -

+1

可能重复的[用javascript,我可以更改一个svg“g”元素的Z索引/图层吗?](http://stackoverflow.com/questions/482115/with-javascript-can-i-change- the-z-index-layer-of-svg-g-element) – 2011-06-08 17:39:41

+0

在http://stackoverflow.com/questions/482115/with-javascript-can-i-change-the-z-index中添加了一个替代方案(和是的,我认为这是重复的 - 也许这些问题可以合并) – 2011-06-09 08:05:55

回答

0

你可以给它一个巨大的z-index和切换,如果它是绝对定位(或固定)的可见性或显示,如果它是静态的。最少量的重绘是将其定位或固定,并在隐藏和可见之间切换可见性。

+2

SVG规范没有定义如何工作(阅读:它目前不需要z-index支持)。然而,对于svg根元素,如果它受到CSS盒模型的支配(比如html中的inline svg),那么你只能在svg根上使用z-index(因为CSS规范定义了它的工作原理) 。然而,将来有一个在svg内部添加z-index的提议,请参阅http://www.w3.org/Graphics/SVG/WG/wiki/Proposals/z-index – 2011-06-09 07:59:22