所以我試圖通過z-index來控制大小相同的元素的堆疊。 現在我最近遇到的一個想法是爲了避免瀏覽器通過z-索引,並希望避免瀏覽器迴流來提高性能,而不是通過命令將命令添加到父級。通過附加dom元素來避免zIndex
因此,如果我有一個容器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是申報單數)?如果我理解正確,更改單個元素的z-index應導致瀏覽器重繪或重排。
- 第二種方法是否按照附加順序工作和堆棧元素?
- 是否有一種方法可以使用DOM的子節點結構移動子節點,因此我不必創建單獨的鏈接列表?我只看到我現在可以使用的removeChild和appendChild函數。
是的性能是一個問題,因爲我打算使用這個圖形和html5的東西。所以我可以保存的地方我想保存。
歡迎來到SO。首先,問題格式不錯,但處理過程有點過分,我認爲...也許你可以發佈一個更簡單的例子,如果可能的話,在jsfiddle上進行演示。 – elclanrs
我刪除了這些方法之間的比較,因爲我自己可以這樣做,我只是留下了我真正想問的問題。 – Sarenthenis