1

ホバー時にのみ要素を前面に出し、マウスを離したときに以前の z-index に戻るようにします。Raphael でこれを行う方法はありますか。toFront を呼び出す前に要素の現在の z-index を保存してから、再度適用しますか?

4

1 に答える 1

5

簡単に言えば、いいえです。この理由は、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) クローンを前面に移動します。元の場所を共有するため、そのホバー イベントはすぐに発生します。

これは完全にクリーンなソリューションではありませんが、要素を再シャッフルして特定の順序を再作成しようとするよりも優れています (特に要素が多数ある場合)。

于 2012-12-03T22:13:24.940 に答える