Javascript 拉斐尔的托夫罗?

Javascript 拉斐尔的托夫罗?,javascript,raphael,Javascript,Raphael,我希望一个元素只在悬停时出现在前面,然后返回到我鼠标离开时的z索引。在拉斐尔,我有没有办法做到这一点;在调用toFront之前保存元素的当前z索引,然后再次应用它?简短的回答是,否。这是因为SVG不依赖z索引属性来确定元素的呈现顺序——它只是使用它们在SVG文档中出现的顺序(所谓的“画师顺序”——从后到前)。为了复制相同的内容,您需要在当前元素之前记录项目,将目标对象移动到悬停元素列表的末尾,然后将其移动到其上一个同级位置之后的原始位置。凌乱而复杂,没有内置的支持 较长的答案是你真的不需要。在大

我希望一个元素只在悬停时出现在前面,然后返回到我鼠标离开时的z索引。在拉斐尔,我有没有办法做到这一点;在调用toFront之前保存元素的当前z索引,然后再次应用它?

简短的回答是,否。这是因为SVG不依赖z索引属性来确定元素的呈现顺序——它只是使用它们在SVG文档中出现的顺序(所谓的“画师顺序”——从后到前)。为了复制相同的内容,您需要在当前元素之前记录项目,将目标对象移动到悬停元素列表的末尾,然后将其移动到其上一个同级位置之后的原始位置。凌乱而复杂,没有内置的支持

较长的答案是你真的不需要。在大多数情况下,您只需使用以下技巧即可逃脱:

el.hover( function()
    {
        var duplicated_node = this.clone();
        duplicated_node.hover( function() {}, function()
            {
                this.remove();
            } );
        duplicated_node.toFront();
    }, function() {} );
换句话说,你 a) 克隆对象; b) 向克隆添加一个悬停函数,悬停结束时将其删除; c) 将克隆移动到前面。由于它将共享原始的位置,其悬停事件将立即触发

这不是一个完全干净的解决方案,但它比尝试重新排列元素以重新创建特定的顺序要好(更简单、更高效)——特别是如果您有很多元素。

简单的答案是,不需要。这是因为SVG不依赖于z-index属性来确定元素呈现顺序——它只是使用它们在SVG文档中出现的顺序(所谓的“画家顺序”——从后到前)。为了复制相同的内容,您需要在当前元素之前记录项目,将目标对象移动到悬停元素列表的末尾,然后将其移动到其上一个同级位置之后的原始位置。凌乱而复杂,没有内置的支持

较长的答案是你真的不需要。在大多数情况下,您只需使用以下技巧即可逃脱:

el.hover( function()
    {
        var duplicated_node = this.clone();
        duplicated_node.hover( function() {}, function()
            {
                this.remove();
            } );
        duplicated_node.toFront();
    }, function() {} );
换句话说,你 a) 克隆对象; b) 向克隆添加一个悬停函数,悬停结束时将其删除; c) 将克隆移动到前面。由于它将共享原始的位置,其悬停事件将立即触发


这不是一个完全干净的解决方案,但它比尝试重新排列元素以重新创建特定的顺序要好(更简单、更高效),特别是如果您有很多元素。

嗨,凯文,您认为您的解决方案可以应用于这种情况吗?我希望单击的路径始终位于tophi kevin上,您认为您的解决方案可以应用于这种情况吗?我希望单击的路径始终位于顶部