2012-03-13 10 views
-1

私は、画面内のチャートにHighStockを使用しています。私はランダムな点で私のシリーズに異なるフラグを持っています。ドラッグ後にSVG要素が上にならない

グラフのどこにでもフラグをドラッグアンドドロップする必要があります。

ここのフィドルはhttp://jsfiddle.net/X7AHK/13です。

フラグをドラッグすることはできますが、フラグを削除すると表示されません。フラグ要素は、その場所にマウスオーバーするとアイコンが変化するのを見ることができる場合、ドロップされた場所にまだそこにあります。

要素のオーバーレイに問題がありますか?

+0

明確にすることができます:グラフ上にドラッグ&ドロップできる「フラグ」は何ですか?私はあなたの問題を理解しています(下に示すように)一般的にどのように解決するかを教えてもらえますが、具体的に再現することはできませんので、解決方法のアドバイスはできません。 (私はそれがあなたの「旗」であれば、「On Series」アイテムをドラッグして移動することはできません) – Phrogz

答えて

1

SVGはレンダリングに"painters model"を使用しています。つまり、ソースコード/ DOMの後ろにある要素は、ソース/ DOMの後に表示される項目によって常に引き継ぐことができます。 (これは、アイテムの並べ替えを許可するためにz-indexプロパティを持つHTMLとは対照的です)。

したがって、アイテムを「トップ」に移動するには、アイテムを別のアイテムに再挿入する必要がありますDOM内のポイント。たとえば、this demoを参照してください。青色と赤色のボックスを重複するようにドラッグし、それぞれを交互にクリックします。これはソースコードのライン94によって達成される:

el.parentNode.appendChild(el); // move to top 

コメント要素が絶対トップに移動されるのではなく、そのすべての兄弟の最後に描画される限り、わずかに紛らわしいです。あなたがソースDOMを見れば、あなたは(簡体字)表示されます:

<svg ...> 
    <g transform="scale(1.2,0.8)"> 
    <rect class="drag resize" ... fill="#c66"/> 
    <rect class="drag resize" ... fill="#69c"/> 
    </g> 
    <circle class="drag sizer" ... r="5"/> 
    <circle class="drag sizer" ... r="5"/> 
</svg> 

をこのように、あなたは<g>競売で最後の子であることを並べ替えされた矩形をクリックすると、他の矩形内の後にレンダリングそのグループの上に描画されますが、常にコーナーの上に描画される黄色の円の前にレンダリングされます。

+0

あなたの返事をありがとう。実際には、シリーズのランダムな点に画像を置く必要があります。ユーザはチャートの異なるポイントに画像をドラッグアンドドロップできます。そのために私はフラグをドラッグ&ドロップのソリューションを使用しようとしていた。あなたはその機能をどのように達成することができますか? Highstockは複数のrect要素を重ねて描画してフラグを作成すると思います。フラグをクリックすると、イベントは一番上の要素で発生し、ドラッグされます。 この[リンク](http://jsfiddle.net/X7AHK/16/)をご覧ください。あなたはその解決策を提案して喜んでいただけますか?ありがとう –

関連する問題