左のcss位置に基づいてdom要素を並べ替えるにはどうすればよいですか?
left
10、20、30 パーセントの値を持つ 3 つの要素があり、 position: absolute
.
DOMでは順番になっていますが、属性( )20, 10, 30
に従って昇順に並べたいと思います。left
10, 20, 30
3 つの要素はすべてdiv
id を持つa の中にありますparent
左のcss位置に基づいてdom要素を並べ替えるにはどうすればよいですか?
left
10、20、30 パーセントの値を持つ 3 つの要素があり、 position: absolute
.
DOMでは順番になっていますが、属性( )20, 10, 30
に従って昇順に並べたいと思います。left
10, 20, 30
3 つの要素はすべてdiv
id を持つa の中にありますparent
子要素を配列としてループしてソートできるようにする必要があります。次に、子要素を正しい順序で再接続する必要があります。これは、jQuery を使用しない純粋な JavaScript で実行できます。
var parent = document.getElemntById(parent),
children = [];
// loop through the child nodes, add them to your array
// and remove them from the parent
for (var i = parent.childNodes.length-1; i >= 0; i--) {
children.push(parent.childNodes[i]);
parent.removeChild(parent.childNodes[i]);
}
// sort them based on the left property
children.sort(function(a,b){
return window.getComputedStyle(a)['left'] - window.getComputedStyle(b)['left'];
});
// add them back to the parent in order
for (var i in children) {
parent.appendChild(children[i]);
}
基本的に、変更したい DOM 要素をループして、それらを配列に入れます。次に、必要なプロパティ (この場合はwindow.getComputedStyle(elem)['left']
) で配列を並べ替えてから、配列が指示する順序で要素を再挿入します。