そのため、z-index を使用して同じサイズの要素のスタックを制御しようとしています。最近、z インデックスを通過するのを避け、できればブラウザーのリフローを回避することでパフォーマンス時間を改善するというアイデアは、代わりに親に追加する順序でレイヤーを並べ替えるというものです。
したがって、すべてのスタック div を保持するコンテナー div と、スタック div を参照する順序を反映するリンク リストがある場合、ユーザー入力に基づいて div を並べ替えます。次に、z インデックスを更新する代わりに、div 要素を再作成し、すべてを順番に追加します。だから、このようなもの:
var from = nodeBeforeFrom; // Input
var target = nodeBeforeTarget; // Input
var linkedlist = input; // var linkedlist contains all the stacking divs
linkedlist.moveElement(div1, div2); //Move div1 to after div2
var container = document.createElement('div');
linkedlist.reorder; //
var cur = linkedlist.first;
while (cur.next) {
container.appendChild(cur)
cur = cur.next;
}
document.removeChild(oldContainer);
document.appendChild(container);
// This is meant as pseudocode so forgive an errors in regards to the specifics
だから私の質問は次のとおりです。
- これにより、ブラウザーのリフローが n リフローから 1 または 2 (n は div の数) に減少しますか? 私がそれを正しく理解していれば、単一の要素の z-index を変更すると、ブラウザーの再描画またはリフローが発生するはずです。
- 2 番目のアプローチは機能し、追加した順序で要素をスタックしますか?
- 別のリンクされたリストを作成する必要がないように、DOM の子ノード構造を使用して子ノードを移動する方法はありますか? 現時点で使用できる removeChild および appendChild 関数のみが表示されます。
そして、グラフィックスとhtml5のものにこれを使用することを計画しているので、はい、パフォーマンスが問題です. だから、救えるところは救いたい。