300pxのグリッド(3x3)があり、各グリッドフィールドの幅は100pxです。
ここでjsfiddleを見てみると、非常に簡単に説明できます。Onloadsレイアウトアイソトープはうまく機能しますが、たとえばli
要素#2をクリックすると、グリッドが再分類されますが、スペースを正しく使用しません。
なぜ3の隣にあるのli
ですか?li
4がそこに収まります!同位体がこれを処理すると思いましたか?これを取得する方法は?
ご協力いただきありがとうございます!frgtv10
300pxのグリッド(3x3)があり、各グリッドフィールドの幅は100pxです。
ここでjsfiddleを見てみると、非常に簡単に説明できます。Onloadsレイアウトアイソトープはうまく機能しますが、たとえばli
要素#2をクリックすると、グリッドが再分類されますが、スペースを正しく使用しません。
なぜ3の隣にあるのli
ですか?li
4がそこに収まります!同位体がこれを処理すると思いましたか?これを取得する方法は?
ご協力いただきありがとうございます!frgtv10
問題は、近似順序関数にあります。2をクリックすると、順序が2.5(インデックス1 + 1.5)に設定されますが、これは4の順序(インデックス3)よりもまだ小さくなっています。同じことが2の次数を持つ3にも当てはまります。
これを修正するには、より複雑な注文関数が必要です。これが4つの要素に対してのみ機能する必要があると仮定すると、次のコードが機能するはずです。
if(index == 0) { //element 1 should appear first
order = 0;
}
else if ( $item.hasClass('large') && index % 3 == 1 ) {
order = index + 2.5;
}
else if ( $item.hasClass('large') && index % 3 == 2 ) {
order = index + 1.5;
}
else {
order = index;
}
編集:コードを少しきれいにし、任意のサイズの行をサポートするには、並べ替え関数を次のように表示します。
int columns = 3;
if(index % columns == 0) { //element 1 should appear first
order = index;
}
else if ( $item.hasClass('large')) {
order = index + columns - (index % columns) + .5;
}
else {
order = index;
}